繁体   English   中英

Linq-获取具有列表属性的对象,该属性在另一个列表中不包含值

[英]Linq - get objects with a list property that does not contain values in another list

我觉得自己完全无法解决这个问题。

我有一个称为ExistingBookings的“ Booking”对象列表。 我也有一个“计数”对象的ObservableCollection,每个对象都有一个“ Bookings”属性,该属性是“ Booking”对象的列表。

使用Linq,如何选择其“ Bookings”属性中不包含ExistingBookings中任何“ Booking”对象的所有Count对象?

List<Booking> ExistingBookings = new List<Booking>();
ExistingBookings.Add(Booking1);
ExistingBookings.Add(Booking2);

Count1 = new Count();
Count1.Bookings.Add(Booking2);
Count1.Bookings.Add(Booking3);

Count2 = new Count();
Count1.Bookings.Add(Booking3);
Count1.Bookings.Add(Booking4);

List<Count> counts = new List<Count>();
counts.Add(Count1);
counts.Add(Count2);

我期望输出是仅包含Count2的Count对象的列表,因为ExistingBookings中都不存在其Booking对象。

请让我摆脱苦难:(

假设您的Booking类正确实现了相等和哈希码,则可以使用:

var result = counts.Where(c => !c.Bookings.Intersect(ExistingBookings).Any());
counts.Where(c => c.Bookings.All(b => !ExistingBookings.Contains(b)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM