C# - Lambda / LINQ - 从Dictionary <string,string =“”> []到List <string []> </string []> </string,>

时间:2014-06-30 20:10:06

标签: c# linq list dictionary lambda

长话短说,我想要实现的是将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);
        }

1 个答案:

答案 0 :(得分:13)

所以你想要的只是值?

arrayOfStringDictionaries.Select(dict => dict.Values.ToArray()).ToList();

这基本上意味着什么:

  • 对于数组中的每个字典,获取其所有值,并创建它们的数组

  • 获取所有这些数组,并将它们放入列表