C#Linq EF6,比较2个列表,添加/删除差异

时间:2017-04-04 16:39:07

标签: c# linq

我目前正在开发ASP.NET MVC 4.5应用程序。我使用Entity Framework 6。

我想比较2个列表,并使用Entity Framework 6添加/删除我的集合中的差异。我正在寻找一种方法从 currentList 获取新项目并将它们添加到<之后是strong> originalList 。我的C#看起来如下:

var originalOffer = MyDb.Offer.First(o => o.OfferId == model.OfferId);

    if (originalOffer.OfferData.DeliveryModelPool.Delivery.Count > 0)
    {
        var currentList = model.DeliveryModelId.Select(x => new Delivery {DeliveryModelId = x}).ToList();

        var originalList = originalOffer.OfferData.DeliveryModelPool.Delivery.ToList();

            //... originalOffer.OfferData.DeliveryModelPool.Delivery. Add or delete the difference here


     }

MyDb.SaveChanges();

您对如何使用EF 6解决此问题有所了解吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Except()Intersect();使用A.Except(B)将为您提供A中不包含在B中的所有内容的列表,并使用B.Except(A)反之亦然。使用A.Intersect(B)将为您提供A b。

中的所有内容

在您的具体情况(thanks @stuartd for pointing it out)中,您需要一个EqualityComparer(如果您尚未实现IEqualityComparer<Delivery>,则需要Delivery;您可以使用允许您指定相等比较器的重载(Except()Intersect())。

您也可以覆盖GetHashCode()课程中的Equals()Delivery,而不是EqualityComparer。

答案 1 :(得分:0)

使用此

var list = currentList.Except(originalList).ToList();