2014-04-04 20 views
0

我覺得自己就像一個完全白癡,不能自己解決這個問題。Linq - 獲取不包含另一個列表中的值的列表屬性的對象

我有一個名爲ExistingBookings的「預訂」對象列表。我還有一個「Count」對象的ObservableCollection,每個對象都有一個「預訂」屬性,它是「預訂」對象的列表。

使用Linq,如何選擇「預訂」屬性中不包含任何ExistingBookings中的「預訂」對象的所有計數對象?

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); 

我期待的輸出是僅包含共2個記錄計數的對象的列表中,由於在ExistingBookings既不其預定對象的存在。

請把我出我的痛苦:(

回答

2

假設你Booking類的正確實現平等和哈希碼,你可以使用:

var result = counts.Where(c => !c.Bookings.Intersect(ExistingBookings).Any()); 
+0

謝謝你,我實際上已經做了很類似於這個,但在末尾使用Count()== 0 ather而不是Any()。剛剛重建並重新啓動解決方案,兩者都似乎工作,所以它一定是一些奇怪的調試,這阻止了我這樣做。證實我沒有我想象的那麼愚蠢。 –

1
counts.Where(c => c.Bookings.All(b => !ExistingBookings.Contains(b))); 
相關問題