长话短说,我想要实现的是将Dictionary<string, string>[]
转换为List<string[]>
。我不介意丢失字典的关键信息。
我提出的解决方案正在运行,但我很确定有一种更好的方法可以用LINQ和Lambda表达式来实现相同的结果。
我特别讨厌需要使用额外变量进行计数的部分,但据我所知,不可能使用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);
}
答案 0 :(得分:13)
所以你想要的只是值?
arrayOfStringDictionaries.Select(dict => dict.Values.ToArray()).ToList();
这基本上意味着什么:
对于数组中的每个字典,获取其所有值,并创建它们的数组
获取所有这些数组,并将它们放入列表