#c# #linq
#c# #linq
Вопрос:
У меня есть данные, подобные приведенным ниже
var listOfForm= new List<FormType>()
{
new FormType() { Page = 1, Type = "FORM-K4"},
new FormType() { Page = 2, Type = "OTHER-FORM"},
new FormType() { Page = 3, Type = "OTHER-FORM"},
new FormType() { Page = 4, Type = "FORM-K5"},
new FormType() { Page = 5, Type = "OTHER-FORM"},
new FormType() { Page = 6, Type = "OTHER-FORM"},
new FormType() { Page = 7, Type = "OTHER-FORM"},
new FormType() { Page = 8, Type = "FORM-K6"},
new FormType() { Page = 9, Type = "OTHER_FORM"},
new FormType() { Page = 10, Type = "FORM-K7"},
new FormType() { Page = 11, Type = "FORM-K7"},
new FormType() { Page = 12, Type = "OTHER_FORM"},
};
Я хочу создать словарь. Я хочу добавить эти две ДРУГИЕ ФОРМЫ после FORM-K4 в словарь, где ключом является FORM-K4, а остальная часть списка получила тот же шаблон, добавив ДРУГУЮ ФОРМУ к типу / ключу, который был обнаружен ранее.
например, после формы-k5 есть три другие формы, поэтому я хочу добавить каждую страницу из этих других форм в ключ формы-k5.
var dictForm = dictionary<Type, List<Page>>
итак, когда я обращаюсь к dictForm.key form-k5, он возвращает значение 4,5,6,7, а когда ключом является form-k4, значение равно 1,2,3.
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос, чтобы показать ожидаемый результат в коде.
2. очень трудно понять, чего вы хотите.
Ответ №1:
Вы можете создать свой собственный метод расширения для преобразования данных в словарь, поскольку для этого существуют пользовательские правила.
Код
public static class EnumerableExtensions
{
public static Dictionary<string, List<int>> ToDictionary(this IEnumerable<FormType> formTypes)
{
Dictionary<string, List<int>> output = new Dictionary<string, List<int>>();
string currentType = string.Empty;
foreach (var formType in formTypes)
{
if (formType.Type.StartsWith("FORM") amp;amp; formType.Type != currentType)
{
currentType = formType.Type;
if (!output.ContainsKey(currentType))
{
output.Add(currentType, new List<int>());
}
}
output[currentType].Add(formType.Page);
}
return output;
}
}
Использование
Dictionary<string, List<int>> output = listOfForm
.ToDictionary();
Выходной сигнал
FORM-K4 : 1, 2, 3
FORM-K5 : 4, 5, 6, 7
FORM-K6 : 8, 9
FORM-K7 : 10, 11, 12