使用Enumerable.Where的结果创建对象并将它们添加到列表中

时间:2015-09-15 01:08:23

标签: c# linq lambda

我想查询已有的集合并从结果中创建新对象。我还希望将这些对象添加到现有的LinkedList

我现在所拥有的是

var results = fulldata.Where(x => x.ImportantData == ImportanceLevel.HIGH);

现在results包含一组定义的数据对象,如下所示:

public class DataObject{
    public int x;
    public int y;
    public int DataType;
}

我想用相同的语法(如Where()列表理解方法)编写以下代码的等价物:

var prunedResults = new LinkedList<KeyValuePair<int, int>>();
foreach(var res in results){
  if(res.DataType == DataTypeSpecial){
    prunedResults.Add(new KeyValuePair<int, int>(res.x, res.y));
  }
}

我很陌生&#34;现代&#34; C#所以如果你也可以定义这里使用的术语,它会帮助我进一步回答谷歌。我的意思是,这似乎被称为LINQ,Where()调用使用lambda表达式,但我可能有点不对。

1 个答案:

答案 0 :(得分:2)

var prunedResults = new LinkedList<KeyValuePair<int, int>>();
//do other stuff to prunedResults
prunedResults.AddRange(results.Where(x => x.DataType == DataTypeSpecial)
    .Select(res=> new KeyValuePair<int, int>(res.x, res.y)));