2013-05-15 32 views
3

我有一個列表,我嘗試使用LINQ查詢。 T型有一個屬性是列表< U>。我試圖查詢我的列表< T>的列表< U>屬性,以便只拉取那些List屬性項目與單獨列表< U>中的項目匹配的對象,這些項目是我爲過濾而構建的。我的代碼如下所示:當我的where子句將包含一個LIST時使用LINQ

class T { 
    List<U> Names; 
} 

class U { 

} 

//then I want to query a List of T by interrogating which T objects' Names property has the same items that I have a List <U> that I have created. 

List<U> searchTermItems; 
List<T> allObjects; 

//Query allObjects and find out which objects' Name property items match the items in the searchTermItems list 

回答

6

你可以使用Enumerable.Intersect

var filtered = allObjects.Intersect(searchTermItems); 

因爲您正在使用列表,而不是一個列表的收集工作,以acheive所需的輸出,你需要結合使用Enumerable.WhereEnumerable.Intersect

var filtered = allObjects.Where(x => x.Names.Intersect(searchTermItems).Any()); 
+0

這正是我需要的 - 謝謝! – MickeySixx

+0

'allObjects'列表不會有像你這樣相交的屬性 - 'Where'應該這樣做。就像'Where(t => t.Names.Intersect(searchTermItems).Count()> 0)' – GalacticCowboy

+0

編譯器抱怨我使用List 並且我需要使用IQueryable進行交集。我需要在這裏做什麼?我是否需要將父母和房產清單轉換爲IQuerable ? – MickeySixx