从Dictionary对象列表中查找值

Nod*_*oid 5 c# linq

我有可能是一个非常大的Dictionary对象列表,我需要从键中找到一个特定的值.我当然可以这样做

foreach(Dictionary<long, string> t in Foo)
{
    if (t.TryGetValue(key, out name))
        break;
}
Run Code Online (Sandbox Code Playgroud)

这将很高兴地遍历Foo,直到它找到密钥或foreach结束.

为了加快速度,我宁愿使用少量的LINQ.如果这是一个普通的列表,我会没事的,但由于这是一个Dictionary对象列表,我不太清楚它是如何完成的.

帮助或建议表示赞赏.

Ben*_*ich 6

我想你已经写了你想要做的最有效的版本.由于Linq不能很好地处理输出参数,因此需要稍长的时间.但是你会这样做:

var dict = Foo.FirstOrDefault(d => d.ContainsKey(key));
if (dict != null) { dict.TryGetValue(key, out name); }
Run Code Online (Sandbox Code Playgroud)

  • 嗯,不应该是:`if(dict!= null)`而不是?在当前代码中,仅当`dict`为null时才调用`TryGetValue`,从而导致NullRefException. (2认同)