【问题标题】:Get keys as List<> from Dictionary for certain values从字典中获取某些值的键作为 List<>
【发布时间】:2011-05-27 16:27:37
【问题描述】:

虽然类似于this question,它为我的部分问题提供了 LINQ,但我遗漏了一些看起来必须很明显的东西,以避免在字典中循环的最后一步。

我有一个字典,我想获取一个键列表,其中仅包含值为 true 的项目。现在我正在这样做:

Dictionary<long,bool> ItemChecklist;
...


var selectedValues = ItemChecklist.Where(item => item.Value).ToList();

List<long> values = new List<long>();
foreach (KeyValuePair<long,bool> kvp in selectedValues) {
   values.Add(kvp.Key);
}

有什么方法可以直接转到List&lt;long&gt; 而无需执行该循环?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    要在单个语句中完成:

    var values = ItemChecklist.Where(item => item.Value).Select(item => item.Key).ToList();
    

    【讨论】:

      【解决方案2】:

      尝试使用Enumerable.Select

      List<long> result = ItemChecklist.Where(kvp => kvp.Value)
                                       .Select(kvp => kvp.Key)
                                       .ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多