任何使您能够检查集合中的任何项是否与某个谓词匹配。因此,您可以将谓词定义为“如果任何项目与当前项匹配”:
fewBarNew.Where(f => !existingProviderIdList.Any(ep => ep == f.ProviderID));
但是,我认为将采用更清洁的方式 .Contains :
.Contains
var result = fewBarNew.Where(f => !existingProviderIDs.Contains(f.ProviderID));
然后,正如此执行 O(n^2) 你可以改善使用 HashSet<string> 代替:
O(n^2)
HashSet<string>
var existingProviderIDSet = new HashSet<string>(existingProviderIDs); var result = fewBarNew.Where(f => !existingProviderIDSet.Contains(f.ProviderID));
如 HashSet 的 Contains 执行 O(1) 操作,这将执行 O(n) 。
HashSet
Contains
O(1)
O(n)