1

この質問では、C#のIEnumerableに列を追加します。次のコードを取得しました。

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

// make a new ie2 that has an extra calculated field
var ie2 = processes.Select( e => new { e.ACCT,  e.RefID, color = e.RefID + 9000000 });

var grid = new WebGrid(ie2.ToList(), rowsPerPage : 50, ajaxUpdateContainerId : "grid" );

データは正しく表示されますが、グリッドはソートされなくなります。ie2の代わりにieを渡すと、問題なくソートされます。ToList()を実行するかどうかに問題があります。明らかに、ieとie2の間にはいくつかの違いがあります。これがieのGetTypeです:

System.Collections.ObjectModel.ReadOnlyCollection`1[System.Object]

およびie2の場合:

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Object,<>f__AnonymousType0`10[System.Object,System.Object,System.Object,System.Object,System.Object,System.Object,System.Object,System.Object,System.Object,System.Object]]

ie2をWebGridで動作させ、正しくソートするにはどうすればよいですか?

4

1 に答える 1

2

次のように、匿名の型を使用する代わりに、ie2の型を作成してみてください。

var ie2 = processes.Select( e => 
   new MyNewType { ACCT = e.ACCT, RefID = e.RefID, Color = e.RefID + 9000000 }
);

新しいタイプは次のようになります。

class MyNewType {
   public string ACCT { get; set }
   public int RefID { get; set }
   public int Color { get; set }
}
于 2011-03-17T13:05:23.050 に答える