2012-04-01 12 views
0

IEnumerableのint値をJQGridに表示しようとしています。以下の列gmuはIEnumerable intですが、グリッドに正しく表示されません。代わりに、値の、このことはGMU列のグリッドに示すものである:IEnumerable <int>をJQGridに表示する方法

System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType2 5 [可能System.Int32、可能System.String、可能System.Int32、可能System.Int32、可能System.Int32 ]、可能System.Int32]

var result = from x in test 
        group x by new { x.dau, x.population_estimate, x.year } into p 
        select new 
        {        
         dau = p.Key.dau, 
         population_estimate = p.Key.population_estimate, 
         year = p.Key.year, 
         gmu = p.Select(x => x.gmu) 
        };   


     int pageIndex = Convert.ToInt32(page) - 1; 
     int pageSize = rows; 
     int totalRecords = results.Count(); 
     int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 


     var pageResults = result.Skip(pageIndex * pageSize).Take(pageSize); 

     var jsonData = new 
     { 
      total = totalPages, 
      page, 
      records = totalRecords, 
      rows = (
       from pageResult in pageResults 
       select new 
       { 
        //id = pageResult.id, 
        cell = new[] { 
            pageResult.year.ToString(), 
            pageResult.dau.ToString(), 
            pageResult.gmu.ToString(),        
            pageResult.population_estimate.ToString(),          
        } 
       }).ToArray() 
     };   

答えて

1

は、あなたは自分のLINQ文で "選択" の後に "てToArray()" を追加する必要があります。何が起こっている

gmu = String.Join<int>(", ", p.Select(x => x.gmu)) 

は、それはあなたのIEnumerableオブジェクトをレンダリングするために行くとき、.NETが暗黙のうちにその結果、(それは実際には自ら上のオブジェクトを列挙するために十分にスマートではありません)「のToString()」関数を呼び出している、ということですあなたが見るもので。

+0

これを実行すると、私の列に「System.Int32 []」と表示されるようになりました。しかし、私はブレークポイントを置くとコードを見てint []配列と値を正しく示しています。何か案は?ありがとう – KeelRisk

+0

私の間違い。カンマで区切って表示するだけですか?上記はIEnumerableをStringに変換して動作するはずです。 – McGarnagle

+0

よろしくお願いします。ありがとう。上記を使用している人のためのメモ... "、"とp.Selectの間にコンマを入れてください。 – KeelRisk

関連する問題