我有這樣的代碼:LINQ凡使用列表過濾
.Where(o => o.Parents.Contains(name))
上面的代碼不起作用,因爲Parents
包含Parent
對象,這反過來有一個屬性Name
的列表。我想檢查Name
財產,但它是一個清單,所以我怎麼做這個檢查?所以我希望Where
爲true
當列表中的任何Parent
對象的Name
屬性設置爲name
。
我有這樣的代碼:LINQ凡使用列表過濾
.Where(o => o.Parents.Contains(name))
上面的代碼不起作用,因爲Parents
包含Parent
對象,這反過來有一個屬性Name
的列表。我想檢查Name
財產,但它是一個清單,所以我怎麼做這個檢查?所以我希望Where
爲true
當列表中的任何Parent
對象的Name
屬性設置爲name
。
試試下面的代碼片段:
.Where(o => o.Parents.Any(p => p.Name == name))
有一個簡單的解決方法:使用更多的LINQ。
.Where(o => o.Parents.Any(p => p.Name == name))
作爲替代方案,您可以使用稍微詳細(但同樣懶惰)
.Where(o => o.Parents.Select(p => p.Name).Contains(name))
可以使用。任何檢查對於要檢查特定屬性的對象集合中的特定條件。
.Where(o => o.Childs.Any(child => child.Name == o.Name));
是的,它做到了!編輯以更好地適應該問題。我會接受魔法10分鐘結束的時間。 – Tower
'p => p.Contains(name)''將不起作用,因爲他想檢查'Parents'的Name屬性。 –
@FreshCode我只是用他的代碼... –