在c#中向IEnumerable添加一列

我认为我实际上不能将字段(列)添加到现有的IEnumerable中。 但我想要的是一个新的IEnumerable,它是从一个带有计算字段的现有IEnumerable派生出来的。 使用Web Pages的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中的所有行。 但我希望有更优雅的东西。

怎么样:

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

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

 ie2 = ie.Select( e => new { IE = e, NewParam = e.X+eY }); 
 ie2 = ie.Select(v => new {va, vb, c = va + vb}); 

使用Linq!

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

此外,可能最好(如果您打算在此方法之外使用)来使该匿名类型命名。

首先, IEnumerable可能是一个东西的列表 – 一个对象。 这是您可以扩展的对象。

你可以这样做:

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