【发布时间】:2019-08-04 04:34:34
【问题描述】:
所以基本上我有两个大列表,如下所示:
public class Items
{
public string ItemID { get; set; }
}
var oldList = new List<Items>(); // oldList
var newList = new List<Items>(); // new list
两个列表都非常大,如果它们都很大(超过 30 秒),由于执行时间很短,因此简单的双 foreach 是不够的。
在我在 stackoverflow 上提出的上一个问题中,我得到了关于如何比较这两个相同列表并找出哪些项目具有不同 QuantitySold 参数的回复,然后将其存储在名为“DifferentQuantityItems”的第三个列表中,如下所示:
var differentQuantityItems =
(from newItem in newList
join oldItem in oldList on newItem.ItemID equals oldItem.ItemID
where newItem.QuantitySold != oldItem.QuantitySold
select newItem).ToList();
现在我想从这两个列表中得到以下信息:
- A list of items that are present in newList, but not in oldList
- A list of items that are present in oldList, but not in newList
我怎样才能做到这一点?有人可以帮帮我吗?
附:我会“知道”其中一个列表中缺少任一项目的方式是通过属性“ItemID”...
【问题讨论】:
-
有人吗? =)
-
你可以试试
intersection和union的LINQdocs.microsoft.com/en-us/dotnet/api/… -
您可以将
Equals方法与自定义比较器类一起使用 -
使用
LINQ不会保证任何性能提升,看看这里stackoverflow.com/questions/11124797/… -
@Aarif 哦,当我看到其中一个回复中提到的并行循环时,我立即跑掉了......我对并行循环有不好的经历哈哈 =D