我需要一个不在NewGuid中的OldGuid列表,所以我使用了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)
您应该使用HashSet<Guid>
s.
然后可以编写OldGuids.IntersectWith(NewGuids)
Filtered = OldGuids.Except(NewGuids)
(请注意,这只会返回唯一的元素,如果您想保留重复项,这不是您想要的)。
var newGuidSet=new HashSet<Guid>(newGuids);
Filtered = OldGuids.Where(g=>!newGuidSet.Contains(g));