【问题标题】:C# - Lambda / LINQ - Conversion From Dictionary<string, string>[] to List<string[]>C# - Lambda / LINQ - 从 Dictionary<string, string>[] 到 List<string[]> 的转换
【发布时间】:2014-06-30 20:10:06
【问题描述】:

长话短说,我想要实现的是将Dictionary&lt;string, string&gt;[] 转换为List&lt;string[]&gt;。我不介意丢失字典的关键信息。

我想出的解决方案是有效的,但我很确定有一种更好的方法可以使用 LINQ 和 Lambda 表达式完成相同的结果。

我特别讨厌需要为计数使用附加变量的部分,但据我所知,不可能通过 for 循环来循环 Dictionary&lt;string, string&gt;

提前致谢。

 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# linq list dictionary lambda


    【解决方案1】:

    所以你想要的只是价值观?

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

    这基本上意味着什么:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多