我觉得自己是个完全白痴,不能自己解决这个问题。
我有一个名为ExistingBookings的“预订”对象列表。我还有一个ObservableCollection的“Count”对象,每个对象都有一个“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对象列表,因为它们的Booking对象都不存在于ExistingBookings中。
请让我摆脱痛苦:(
答案 0 :(得分:2)
假设您的Booking
类正确实现了相等和哈希码,您可以使用:
var result = counts.Where(c => !c.Bookings.Intersect(ExistingBookings).Any());
答案 1 :(得分:1)
counts.Where(c => c.Bookings.All(b => !ExistingBookings.Contains(b)));