我有两个列表,我试图返回不在另一个列表中的项目。这是我的代码:
var Results = ListOne.Where(x => ListTwo.All(a => a.EmployeeNum != x.EmployeeNum && a.Sched != x.Sched));
这大约需要 9-10 秒才能完成。 ListOne 大约有 1200 条记录,ListTwo 大约有 33000 条记录。
最佳答案
使用 HashSet<T>
, 因为它有 O(1)
搜索时间可以提高性能,例如
var hashSet = new HashSet<T>(ListTwo.Select(x => Tuple.Create(x.EmployeeNum, x.Sched)));
var results = ListOne.Where(x => !hashSet.Contains(Tuple.Create(x.EmployeeNum, x.Sched)));
关于c# - 加快性能 - LINQ 获取一个列表中不在另一个列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504000/