2012-03-16 25 views
2

これは、Dapperのクエリ結果を2次元配列に変換するのに使うことができる最小のコードですか?Dapperの結果から2次元配列を作成する

var array = 
    cn.Query(@"SELECT Id, Desc FROM Things") 
     .Select<object, ArrayList>(d => 
     { 
      return new ArrayList {((dynamic) d).Id, ((dynamic) d).Desc }; 
     }); 

私は基本的に、このようなJSONレスポンスとして返される結果を構築しています:

[ 
    [1, "Thing one"], 
    [2, "Thing two"], 
    [3, "Thing two"], 
] 

は、使用してarrayを直列化:それは仕事をしていませんので、

string json = Newtonsoft.Json.JsonConvert.SerializeObject(array); 

は、正しい結果を生成します、私はちょうどそこにショートカットがあると思いますか?

答えて

5

ないDapper構文について確認が、何ArrayListを落とす程度、代わりに選択内部object[]を戻し、最後にToArray()を呼び出す:

var array = 
    cn.Query(@"SELECT Id, Desc FROM Things") 
     .Select(d => new object[] { d.Id, d.Desc }) 
     .ToArray(); 

これは、あなたobject[,]を与えるだろう。

.Select(d => new [] { d.Id, d.Desc }) 
+1

それは実際には、さらに減らすことができます: '.Select(d => {新しいオブジェクトを返す{d.Id、d.Desc};});' – Kev

+0

@Kev: .Select(d => new [] {d.Id、d.Desc}); 'おそらく' .Select(d => new [] {d.Id、d.Desc}); 。 – Gabe

+0

@Gabe - ああよく目に見えるので、それは...悪いR#はそれを拾っていない:)。これがスタックオーバーフローが大好きな理由です。 – Kev

-1

私はナンシーフレームワークを使用しています:あなたは、実際の配列型を指定して、私の省略がさらに短いバージョンを使用することができますdynamic[,]の結果を気にいけない場合

。配列に出力すると、json出力にはパラメータ名はありません。

オブジェクトクラスでIEnumerableを使用してJSONに出力すると、JSON出力がうまくフォーマットされます。

IEnumerable IncomingAlerts = cn.Query(@"SELECT QUERY"); 
return Response.AsJson(new { results = IncomingAlerts }); 

すべてがうまく書式設定されます。魔法のように。

関連する問題