【问题标题】:How to select values and key in a Dictionary of lists?如何在列表字典中选择值和键?
【发布时间】:2016-01-02 08:24:21
【问题描述】:

我有这个数据:

public class MetaLink
{
    public long LinkNumbering { get; set; }
    public long TargetPageId { get; set; }
    public string TargetUrl { get; set; }
    public LinkType LinkOfType { get; set; }
}
public static ConcurrentDictionary<int, List<MetaLink>> Links = new ConcurrentDictionary<int, List<MetaLink>>();

如何获取列表字典值中MetaLink对象的所有索引以及TargetUrl属性==“某些值”的对应字典键

也许使用 Linq 是可能的,但我找不到。 我这样做:

var someLinks = Links.Values.Where(kvp => kvp.Any(ml => ml.TargetUrl == "Some value"));

但我无法获得对应的字典 int 键

【问题讨论】:

  • 你的连续句子真的很难解析。如果您提供一个带有示例输入和预期输出的具体示例,那么提供帮助会更容易 - 理想情况下也是您迄今为止尝试过的。

标签: c# linq list dictionary


【解决方案1】:

你很接近 - 你想要

var someLinks = Links.Where(kvp => kvp.Value.Any(ml => ml.TargetUrl == "Some value")) 
                           // all key.value pairs where the Value contains the target URL
                     .Select(kvp => kvp.Key);   //keys for those values

【讨论】:

    【解决方案2】:

    试试这个。还没编译。

    var key = Links.Where(kvp => kvp.Value.Any(ml => ml.TargetUrl == "Some value")).Select(x => x.Key).SingleOrDefault();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多