【问题标题】:Convert dictionary values to list using linq使用 linq 将字典值转换为列表
【发布时间】:2013-07-29 07:30:20
【问题描述】:

以下代码给出了“对 lambda 表达式的评估在调试器中无效”。 请从下面建议我在哪里做错了 -

List<MyFieldClass> lstFiedls;
lstFiedls = objDictionary.Select(item => item.Value).ToList();

谢谢,

【问题讨论】:

  • objDictionary的类型是什么?

标签: c# linq list dictionary


【解决方案1】:

您不需要使用 Linq 来获取值。 Dictionary(TKey, TValue) 有一个保存值的属性,Dictionary(TKey, TValue).Values

var fields = objDictionary.Values.ToList();

【讨论】:

  • 可能值得注意的是Dictionary&lt;TKey, TValue&gt;.ValueCollection类的ToList()方法实际上是System.Linq中的扩展方法。但是,由于ValueCollection 实现了ICollectionIEnumerable,因此您可以将值添加到列表中而无需转换。
  • 另外值得注意的是,您可以使用AsEnumerable() Linq 扩展方法来获取IEnumerable 而不是ListobjDictionary.Values.AsEnumerable().
  • @RubberDuck 是 Values.AsEnumerable().GetEnumerator();比 Values.ToList().GetEnumerator(); 更高效?我很好奇?
  • 这只是懒惰的@GregoryWilliamBryant。它不会将整个列表作为副本加载到内存中。几个基准测试可能会很有趣。
【解决方案2】:

你会得到一个编译器错误,只是尝试使用 ToList() 将字典的值转换为列表:

        Dictionary<int, int> dict = new Dictionary<int, int>();
        var result = dict.Values.ToList();

除非您在文件中包含“使用 System.Linq”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多