2012-05-10 42 views
1

我有這樣的代碼:LINQ凡使用列表過濾

.Where(o => o.Parents.Contains(name)) 

上面的代碼不起作用,因爲Parents包含Parent對象,這反過來有一個屬性Name的列表。我想檢查Name財產,但它是一個清單,所以我怎麼做這個檢查?所以我希望Wheretrue當列表中的任何Parent對象的Name屬性設置爲name

回答

2

試試下面的代碼片段:

.Where(o => o.Parents.Any(p => p.Name == name)) 
+0

是的,它做到了!編輯以更好地適應該問題。我會接受魔法10分鐘結束的時間。 – Tower

+0

'p => p.Contains(name)''將不起作用,因爲他想檢查'Parents'的Name屬性。 –

+0

@FreshCode我只是用他的代碼... –

2

有一個簡單的解決方法:使用更多的LINQ。

.Where(o => o.Parents.Any(p => p.Name == name)) 

作爲替代方案,您可以使用稍微詳細(但同樣懶惰)

.Where(o => o.Parents.Select(p => p.Name).Contains(name)) 
0

可以使用。任何檢查對於要檢查特定屬性的對象集合中的特定條件。

.Where(o => o.Childs.Any(child => child.Name == o.Name));