在c#中向IEnumerable添加一列

时间:2011-03-17 11:41:47

标签: c# linq webmatrix

我认为我实际上不能将字段(列)添加到现有的IEnumerable中。但我想要的是一个新的IEnumerable,它是从一个带有计算字段的现有IEnumerable派生出来的。使用网页的WebMatrix中的伪代码如下所示:

var db = Database.Open("LOS");
var ie = db.Query(sqlAssignments);

// make a new ie2 that has an extra field
// ??? ie2 <=== ie with new field c = ie.a + ie.b

var grid = new WebGrid( ie2, extra parameters );

我知道如何循环遍历ie中的所有行。但我希望有更优雅的东西。

5 个答案:

答案 0 :(得分:6)

怎么样:

var ie2 = ie.Select(x => new { x.Foo, x.Bar, Sum = x.Abc + x.Def });
var grid = new WebGrid(ie2);

答案 1 :(得分:4)

您可以使用Select执行此操作。试试这个:

ie2 = ie.Select( e => new { IE = e, NewParam =  e.X+e.Y });

答案 2 :(得分:3)

ie2 = ie.Select(v => new {v.a, v.b, c = v.a + v.b});

答案 3 :(得分:2)

使用Linq!

var newIe = from item in ie
            select new {item.NewField, item.OldFiedl1 etc... }

此外,最好(如果您打算在此方法之外使用)来创建名为的匿名类型。

答案 4 :(得分:2)

首先,IEnumerable可能是某事物的列表 - 一个对象。这是你可以扩展的对象。

你可以这样做:

var ie = db.Query( ... );
var ie2 = ie.Select(i => new MyIe2Object {
   Prop1 = i.Prop1,
   NewProp = i.Prop1 + i.Prop2
});