我目前正在开发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解决此问题有所了解吗?
非常感谢!
答案 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();