C#-Lambda/LINQ-字典转换<;字符串,字符串>;[]列出<;字符串[]>;
长话短说,我试图实现的是将C#-Lambda/LINQ-字典转换<;字符串,字符串>;[]列出<;字符串[]>;,c#,linq,list,dictionary,lambda,C#,Linq,List,Dictionary,Lambda,长话短说,我试图实现的是将字典[]转换为列表。我不介意丢失字典的关键信息 我提出的解决方案是可行的,但我确信有一种更奇特的方法可以用LINQ和Lambda表达式实现相同的结果 我特别讨厌需要使用额外变量进行计数的部分,但据我所知,使用for循环在字典中循环是不可能的 提前谢谢 Dictionary<string, string>[] arrayOfStringDictionaries = new Dictionary<string, string>[2]
字典[]
转换为列表
。我不介意丢失字典的关键信息
我提出的解决方案是可行的,但我确信有一种更奇特的方法可以用LINQ和Lambda表达式实现相同的结果
我特别讨厌需要使用额外变量进行计数的部分,但据我所知,使用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);
}
Dictionary[]arrayofstringdictionary=新字典[2]
{
新字典(),
新字典()
};
ArrayOfstringDictionary[0]。添加(“1”,“Test1”);
ArrayOfstringDictionary[0]。添加(“2”,“Test2”);
ArrayOfstringDictionary[0]。添加(“3”,“Test3”);
arrayOfStringDictionaries[1]。添加(“1”,“Test4”);
arrayofstringdictionary[1]。添加(“2”,“Test5”);
arrayofstringdictionary[1]。添加(“3”,“Test6”);
List listofStringArrays=新列表();
foreach(ArrayOfstringDictionary中的字典单体)
{
整数计数=0;
string[]stringArray=新字符串[singledic.Keys.Count];
foreach(singledic.Keys中的变量键)
{
stringArray[count]=单DIC[key];
计数++;
}
添加(stringArray);
}
那么您想要的只是值
arrayOfStringDictionaries.Select(dict => dict.Values.ToArray()).ToList();
这基本上意味着:
- 对于数组中的每个字典,获取其所有值,并将它们组成一个数组
- 获取所有这些数组,并将它们放入列表中