2016-06-08 25 views
5

pisałem dwa segmenty polecenia SQL i chcą przetwarzać w jednej kwerendzie jak poniżej:elegancki: Get rezultatu i liczyć w tym samym czasie za pomocą QueryMultiple

SELECT COUNT(*) FROM books 

SELECT * FROM books ORDER BY bookID OFFSET 1000 ROWS FETCH NEXT 10 ROWS ONLY 

Jak mogę wykorzystać conn.QueryMultiple sposób, aby uzyskać count I list of books w w tym samym czasie ?

btw: ja nie chcę tworzyć żadnych dodatkowych klas encji

Odpowiedz

7

Od github example:

var sql = @"SELECT COUNT(*) FROM books 
      SELECT * FROM books ORDER BY bookID OFFSET 1000 ROWS FETCH NEXT 10 ROWS ONLY"; 

using(var multi = connection.QueryMultiple(sql)) 
{ 
    var count = multi.Read<int>().Single(); 
    var results = multi.Read<YourObject>().ToList(); 
} 
+0

masz na myśli, muszę zdefiniować własną klasę 'Book' oddzielić wynik? Czy istnieje ogólny sposób, aby to zrobić? np: var books = multi.Read (IList)(); – ineztia

+0

@ineztia, myślę, że możesz uzyskać wynik jako listę obiektów lub dynamiczny – Backs

+2

Dla dodatkowego kredytu, 'multi' powinno znajdować się w' użyciu' bloku, ponieważ jest 'IDisposable'. –