2011-03-23 52 views
0

我不確定我的標題是否正確,但是linq應該選擇正確的專家來幫助標題並回答問題。如何使用linq返回一個過濾列表?

如果我有一個人員列表,我該如何返回一個PeopleWrappers減去「Dave」和「Jane」的列表?

查詢貌似現在這種權利:

List<Person> People = CreatListofPersons(); 
People.Select(t => new PeopleWrapper(t)).ToArray(); 
+0

,沒關係吧「去哪兒」到來之前後「選擇」或? – MedicineMan 2011-03-23 19:01:12

回答

5
People.Where(x => x.Name!="Dave" && x.Name!="Jane") 
     .Select(t => new PeopleWrapper(t)) 
     .ToArray(); 

LINQ具有的擴展方法,使您可以過濾或項目(您已與Select())的列表。在你的情況下,你可以使用Where()來指定你想讓哪些元素通過,在你的例子中所有名字既不是Dave也不是Jane的人。

如果「Where」之前出現 「Select」或之後有什麼關係嗎?

您通常希望儘快可以過濾,否則,你將有超過你不希望有反正項目迭代和/或項目。

概念雖然,是的,你可以把有where()過濾後你的情況,你是在處理一個PeopleWrapperSelect()項目後 - 因爲Where()擴展方法是使用這種數據類型作爲輸入的條件我不不認爲這會有多大意義 - 你會過濾人的包裝,而不是人。

0
return People.Where(p => p.Name != "Dave" && p.Name != "Jane"); 
0

你可以用在哪裏得到的只是匹配條件的元素:

People.Where(p => p.name != "Dave" && p.name != "Jane").Select(t => new PeopleWrapper(t)).ToArray()