7

フィールド (列) を既存の IEnumerable に実際に追加できるとは思いません。しかし、私が欲しいのは、計算フィールドを持つ既存の IEnumerable から派生した新しい IEnumerable です。Web ページを使用した 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 のすべての行をループする方法を知っています。しかし、もっとエレガントなものがあることを願っています。

4

5 に答える 5

6

どうですか:

var ie2 = ie.Select(x => new { x.Foo, x.Bar, Sum = x.Abc + x.Def });
var grid = new WebGrid(ie2);
于 2011-03-17T11:44:24.087 に答える
4

を使用してこれを行うことができますSelect。これを試して:

ie2 = ie.Select( e => new { IE = e, NewParam =  e.X+e.Y });
于 2011-03-17T11:45:00.987 に答える
3
ie2 = ie.Select(v => new {v.a, v.b, c = v.a + v.b});
于 2011-03-17T11:44:56.350 に答える
2

Linqを使って!

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

また、(このメソッドの外部で使用する場合) その匿名型に名前を付けるのがおそらく最善です。

于 2011-03-17T11:45:01.900 に答える
2

まず第一に、IEnumerableはおそらく何かのリスト、つまりオブジェクトです。それが拡張できるオブジェクトです。

おそらく次のようなことができます:

var ie = db.Query( ... );
var ie2 = ie.Select(i => new MyIe2Object {
   Prop1 = i.Prop1,
   NewProp = i.Prop1 + i.Prop2
});
于 2011-03-17T11:46:05.320 に答える