我需要OldGuids中不属于NewGuids的列表,所以我使用了Contains方法,问题是它已经运行了半个多小时,有更快的方法吗?或需要多长时间?
Dim OldGuids As New List(Of Guid) ' 18 million rows
Dim NewGuids As New List(Of Guid) ' 6 million rows
Dim Filtered = From n In OldGuids Where Not NewGuids.Contains(n)
答案 0 :(得分:3)
您应该使用HashSet<Guid>
s。
然后您可以撰写OldGuids.IntersectWith(NewGuids)
答案 1 :(得分:2)
Filtered = OldGuids.Except(NewGuids)
(请注意,这只会返回唯一元素,如果你想保留重复项,这不是你想要的)。
var newGuidSet=new HashSet<Guid>(newGuids);
Filtered = OldGuids.Where(g=>!newGuidSet.Contains(g));