2012-04-23 49 views
3

我有以下內容:List<InputRow>其中包含一些InputRow對象。使用lambda函數從舊列表創建新列表

我想知道是否有方法讓我在我的原始列表上使用lambda函數給我一個新列表,其中InputRow.someProperty > 1爲所有對象。

這將使我InputRow對象的列表均具有someProperty大於1

+0

[使用LINQ刪除列表中的對象](http://stackoverflow.com/questions/853526/using-linq-to-remove-objects-within-a-listt) – 2012-04-23 19:18:49

回答

6

你可以使用LINQ(的.Where().ToList()擴展方法一起):

List<InputRow> originalList = ... 
List<InputRow> filteredList = originalList 
    .Where(x => x.someProperty > 1) 
    .ToList(); 
+0

使用'RemoveAll在列表上避免刪除並重新創建列表。 – Servy 2012-04-23 19:18:07

+0

@Servy Baxter希望這些結果不會刪除它們 – 2012-04-23 19:19:29

+0

@Servy您能詳細說明RemoveAll的用法嗎?我可以翻轉聲明來說RemoveAll小於或等於1.我只是不確定這是什麼語法。 – Baxter 2012-04-23 19:23:13

2
List<InputRow> newlist = oldlist.Where(x => x.someProperty > 1).ToList(); 

這將搜索您的舊列表,條件someProperty > 1並將結果轉換爲列表使用.ToList()

3

當然。你可以這樣做:

var newList = inputRowList.Where(inputRow => inputRow.someProperty > 1).ToList(); 
7

你當然也可以這樣做:

var list = new List<string>(){ "a", "b", "c" }; 

list.RemoveAll(s => s == "b"); 

這地方刪除而不是創建一個新的列表中的項目。