如何在列表字典中选择值和键?

时间:2015-10-05 15:51:19

标签: c# linq list dictionary

我有这些数据:

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属性的对应字典键==&#34;某些值&#34;

Linq也许可以,但我找不到它。 我这样做:

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

但是我无法获得对应的字典数据

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试一下这个。还没编译。

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