列表查询中缺少慢LINQ

时间:2017-10-26 15:59:33

标签: c# performance linq

我有一个非常标准的代码块,它比较两个列表并返回第一个列表中第二个列表中不匹配的项目。 (不匹配的查询)

但是当两个列表都很大时,不匹配的查询需要3分钟才能执行。

// names.Count ~ 91k 
var names = xxxxx.ToList();

// namePhonetics.Count ~ 91k
var namePhonetics = yyyyy.ToList();

// this line takes 3 minutes to run
var namesMissingPhonetics = names.Where(n => !namePhonetics.Any(np => np.NameId == n.Id)).ToList();

我可以做些什么来提高性能?

1 个答案:

答案 0 :(得分:2)

试试这个:

 var namePhoneticsDict = yyyyy.ToDictionary(x => x.NameId, x => x);
 var namesMissingPhonetics = names.Where(n => !namePhoneticsDict.ContainsKey(n.Id)).ToList();