c# - Lambda / LINQ -从Dictionary[]到List

本文关键字:string List strin LINQ Dictionary Lambda | 更新日期: 2023-09-27 18:11:04

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

c# - Lambda / LINQ -从Dictionary<string, string>[]到List<strin

所以你想要的只是值?

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

这基本上是什么意思:

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

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