我有一个非常标准的代码块,它比较两个列表并返回第一个列表中第二个列表中不匹配的项目。 (不匹配的查询)
但是当两个列表都很大时,不匹配的查询需要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();
我可以做些什么来提高性能?
答案 0 :(得分:2)
试试这个:
var namePhoneticsDict = yyyyy.ToDictionary(x => x.NameId, x => x);
var namesMissingPhonetics = names.Where(n => !namePhoneticsDict.ContainsKey(n.Id)).ToList();