2016-12-15 207 views
0

我想用一個查詢返回兩個結果。例如查詢表,此外我想返回整個表的大小。Dapper使用一個查詢返回多個結果

我不能在c#中完成它,因爲我只想查詢前100個結果的實例,但應該可以讓客戶查詢下100個結果。但事先我想告訴客戶是否有進一步的結果。

例如,我有一張有150個結果的表格。在第一個電話中,我只獲得了前100個結果。但是我也希望得到沒有調用第二個查詢仍有50個結果的信息。這是否可能與精巧?

+0

獲取的總記錄數,前100個記錄和總數 - 100個使用單個查詢? – TheFallenOne

回答

0

這是可能的小巧玲瓏?

Dapper只是一個對象關係映射器,即從面向對象的領域模型映射到關係數據庫。您仍然需要詢問數據庫(使用查詢)總共有多少條記錄。 Dapper不會神奇地爲你解決這個問題。

因此,您需要修改發送到數據庫的查詢(使用Dapper),以便不僅選擇表中的前100行,而且還需要包含一個數字的附加列,該數字指定了數據庫中的記錄總數表。只有數據庫知道這個數字,所以你必須要求它。

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(); 
    } 
} 
+0

這可能滿足OP的要求,但這不完全是他所要求的。這仍然會執行兩個查詢。它會批量他們。我同意@ mm8。 –

+0

這是兩個sql查詢,但是隻有一次訪問數據庫。 –

0

如果你真的只是想知道如果有更多的結果,並沒有有多少,你可以將搜索結果限制爲101。然後折騰了第101行哪隻是一個指標,有超過100行。

0

您還可以查詢整個表,但只顯示前100行,你已經知道,如果有更多的數據顯示,當用戶請求下一組數據的