我有
List<Guid> id
我的字典:
manager.DriveTimes.Containskey(id)
如何检查是否有任何id作为字典中的键存在。 我想一次性检查而不使用针对List id的for循环。
任何建议
答案 0 :(得分:2)
idList.Any(id => manager.DriveTimes.ContainsKey(id));
答案 1 :(得分:1)
您可以使用 System.Linq 中的相交扩展名。
bool anyGuids = manager.DriveTimes.Keys.Intersect(id).Any()
答案 2 :(得分:0)
仅仅为了完成,这里有一些性能比较
List<Guid> listA = new List<Guid>();
for (int count = 0; count < 10000; count++)
{
listA.Add(Guid.NewGuid());
}
List<Guid> listB = new List<Guid>();
for (int count = 0; count < 10000; count++)
{
listB.Add(Guid.NewGuid());
}
// Match by Any without matches.
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
bool matchFound = listA.Any(item => listB.Contains(item));
sw.Stop();
Console.WriteLine("List Match {0}ms", sw.ElapsedMilliseconds);
System.Collections.Generic.Dictionary<Guid, string> dictA = new System.Collections.Generic.Dictionary<Guid, string>();
for (int count = 0; count < 10000; count++)
{
dictA.Add(Guid.NewGuid(),"");
}
// Match by Key without matches.
sw.Reset();
sw.Start();
matchFound = listB.Any(item => dictA.ContainsKey(item));
sw.Stop();
Console.WriteLine("Key Match {0}ms", sw.ElapsedMilliseconds);
这些给出了结果
List Match 1095ms
Key Match 1ms