这是我用来将Dapper查询结果转换为二维数组的最少量代码吗?
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);
产生正确的结果,所以它完成了工作,我只是想知道是否有快捷方式?
答案 0 :(得分:6)
不确定Dapper
语法,但是如何删除ArrayList
,而是在select中返回object[]
并在结尾调用ToArray()
:
var array =
cn.Query(@"SELECT Id, Desc FROM Things")
.Select(d => new object[] { d.Id, d.Desc })
.ToArray();
这将为您提供object[,]
。
如果您不介意dynamic[,]
的结果,您可以使用更短的版本,我省略指定实际的数组类型:
.Select(d => new [] { d.Id, d.Desc })
答案 1 :(得分:-1)
我正在使用Nancy Framework。如果我将它输出到数组,json输出将没有参数名称。
如果我将IEnumerable与对象类一起使用并将其输出到JSON,它将很好地格式化我的JSON输出。
IEnumerable IncomingAlerts = cn.Query(@"SELECT QUERY");
return Response.AsJson(new { results = IncomingAlerts } );
所有内容都将很好地格式化。神奇。