Dapper通过一个查询返回多个结果

时间:2016-12-15 20:14:57

标签: c# sql .net sql-server dapper

我想用一个查询返回两个结果。例如查询表,而且我想返回整个表的大小。

我无法在c#中执行此操作,因为我只想查询前100个结果,但客户应该可以查询接下来的100个结果。但事先我想向客户展示是否有进一步的结果。

例如,我有一张包含150个结果的表格。在第一次通话中,我只得到前100个结果。但是我也希望得到的信息是,在没有调用第二个查询的情况下仍然有50个结果。这可能与小巧玲珑有关吗?

4 个答案:

答案 0 :(得分:0)

  

这可能与小巧玲珑有关吗?

Dapper只是一个对象关系映射器,即从面向对象的域模型映射到关系数据库。您仍然需要询问数据库(使用查询)总共有多少条记录。 Dapper不会神奇地为你解决这个问题。

因此,您需要修改发送到数据库的查询(使用Dapper),不仅要从表中选择前100行,还要包含一个附加列,该列包含一个指定表中记录总数的数字。只有数据库知道这个号码,所以你必须要求它。

答案 1 :(得分:0)

您可以尝试使用QueryMultiple:

using (var conn = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=true; Initial Catalog=foo"))
{
    using (var data = conn.QueryMultiple("select count(*) as TotalCount from data; select top 2 * from data", null))
    {
        var totalRecords = data.Read<int>().Single();
        var records = data.Read<dynamic>();
        var remaining = totalRecords - records.Count();
    }
}

答案 2 :(得分:0)

如果你真的只是想知道如果有更多的结果和多少,你可以将你的结果限制为101.然后抛出第101行,这只是一个指标,有更多超过100行。

答案 3 :(得分:0)

您还可以查询整个表格,但只显示前100行,并且您已经知道当用户要求下一组数据时是否还有更多数据显示