2012-04-23 81 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"); 

这地方删除而不是创建一个新的列表中的项目。