C# - Lambda/LINQ - 从Dictionary <string,string> []到List <string []>的转换

Han*_*lse 2 c# linq lambda dictionary list

长话短说,我想要实现的是将a转换Dictionary<string, string>[]为a 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);
        }
Run Code Online (Sandbox Code Playgroud)

Luc*_*ski 13

所有你想要的是价值观?

arrayOfStringDictionaries.Select(dict => dict.Values.ToArray()).ToList();
Run Code Online (Sandbox Code Playgroud)

这基本上意味着什么:

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

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