#c# #linq #list #dictionary #lambda
#c# #linq #Список #словарь #лямбда
Вопрос:
Короче говоря, чего я пытаюсь добиться, так это преобразовать Dictionary<string, string>[]
в List<string[]>
. Я не против потерять ключевую информацию словарей.
Решение, которое я придумал, работает, но я почти уверен, что есть более удобный способ добиться того же результата с помощью LINQ и лямбда-выражений.
Я особенно ненавижу ту часть, где мне нужно использовать дополнительную переменную для подсчета, но, насколько я знаю, невозможно выполнить цикл через Dictionary<string, string>
с for
циклом
Заранее спасибо.
Dictionary<string, string>[] arrayOfStringDictionaries = new Dictionary<string, string>[2]
{
new Dictionary<string, string>(),
new Dictionary<string, string>()
};
arrayOfStringDictionaries[0].Add("1", "Test1");
arrayOfStringDictionaries[0].Add("2", "Test2");
arrayOfStringDictionaries[0].Add("3", "Test3");
arrayOfStringDictionaries[1].Add("1", "Test4");
arrayOfStringDictionaries[1].Add("2", "Test5");
arrayOfStringDictionaries[1].Add("3", "Test6");
List<string[]> listofStringArrays = new List<string[]>();
foreach (Dictionary<string, string> singledic in arrayOfStringDictionaries)
{
int count = 0;
string[] stringArray = new string[singledic.Keys.Count];
foreach (var key in singledic.Keys)
{
stringArray[count] = singledic[key];
count ;
}
listofStringArrays.Add(stringArray);
}
Ответ №1:
Итак, все, что вам нужно, это значения?
arrayOfStringDictionaries.Select(dict => dict.Values.ToArray()).ToList();
Что это в основном означает:
-
Для каждого словаря в массиве получите все его значения и создайте из них массив
-
Получите все эти массивы и поместите их в список