我想用一个查询返回两个结果。例如查询表,而且我想返回整个表的大小。
我无法在c#中执行此操作,因为我只想查询前100个结果,但客户应该可以查询接下来的100个结果。但事先我想向客户展示是否有进一步的结果。
例如,我有一张包含150个结果的表格。在第一次通话中,我只得到前100个结果。但是我也希望得到的信息是,在没有调用第二个查询的情况下仍然有50个结果。这可能与小巧玲珑有关吗?
答案 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行,并且您已经知道当用户要求下一组数据时是否还有更多数据显示