2012-03-16 6 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을 Serialising 사용 :

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 => 새로운 객체 [] {d.Id, d.Desc} . – Gabe

+0

@ 게이브 - 잘 아는, 그래서 그것은 ... 나쁜 R # 그것을 고르지 않을 수 있습니다 :). 그리고 이것이 우리가 Stack Overflow를 좋아하는 이유입니다. – Kev

-1

나는 낸시 프레임 워크를 사용하고 있습니다 : 당신은 당신이 실제 배열 유형을 지정 나의 생략이 더 짧은 버전을 사용할 수 있습니다 dynamic[,]의 결과를 마음을 해달라고하면

. 배열로 출력하면 json 출력에는 매개 변수 이름이 없습니다.

개체 클래스와 함께 IEnumerable을 사용하여 JSON으로 출력하면 내 JSON 출력 형식이 멋지게 정리됩니다.

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

모든 항목이 멋지게 형식화됩니다. 마술처럼.