从Dapper结果创建二维数组

时间:2012-03-16 17:04:58

标签: c# linq dapper

这是我用来将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); 

产生正确的结果,所以它完成了工作,我只是想知道是否有快捷方式?

2 个答案:

答案 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 } );

所有内容都将很好地格式化。神奇。