从Dapper结果创建二维数组

Kev*_*Kev 2 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 };
        });
Run Code Online (Sandbox Code Playgroud)

我基本上构造一个结果作为json响应返回如下:

[
  [1, "Thing one"],
  [2, "Thing two"],
  [3, "Thing two"],
]
Run Code Online (Sandbox Code Playgroud)

序列化array使用:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(array); 
Run Code Online (Sandbox Code Playgroud)

产生正确的结果,所以它做的工作,我只是想知道是否有一个捷径?

ntz*_*lis 6

不确定Dapper语法,但是如何删除ArrayList,而是返回object[]select内部并ToArray()在最后调用:

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

这会给你一个object[,].

如果你不介意结果dynamic[,]你可以使用更短的版本,我省略指定实际的数组类型:

.Select(d => new [] { d.Id, d.Desc })
Run Code Online (Sandbox Code Playgroud)