我有一个表,其中包含两列的复合主键。在Dapper .NET中,我通过传入select语句以及参数数组来使用.Query。我发现dapper只需要SELECT语句中的参数的单个对象,不像Execute for INSERT和UPDATE,我可以这样做:
var batchParams = new List<object>();
batchParams.add(new
{
ID = 50,
Lang = 40
});
batchParams.add(new
{
ID = 20,
Lang = 31
});
然后我可以将这个数组传递给我的执行调用。本质上,我想运行多个select语句(每个将检索一行),然后将结果作为结果数组返回。这可能在短小精悍吗?
它不是内置的,但您可以添加一个扩展方法,它可以执行以下操作:
foreach(var val in input)
foreach(var row in conn.Query<T>(sql, val))
yield return row;
这也可以通过LINQ-to-Objects中的SelectMany
来实现:
var combined = batch.SeletMany(x => conn.Query<T>(sql, x));