2016-06-15 4 views
1

私はServiceStackのOrmLiteにページングされたクエリを書いて、ページの範囲内のレコードの総数とレコードIDを選択します。 queryレコードの束を選択するいくつかの任意SqlExpressionであると仮定すると:私はServiceStack Ormliteでどのようにカウント(DISTINCT)できますか?

SELECT COUNT(*) 

SELECT DISTINCT ... 

そして合計1:

var idQuery = query.SelectDistinct(r => r.Id); 
var ids = Db.Column<int>(idQuery.Skip(request.Skip).Take(request.Take)); 
var total = Db.Count(idQuery); 

OrmLiteは2つのクエリ、IDSのための1つを生成OrmLiteに総問合せのためにSELECT COUNT(DISTINCT Id)を生成させるか、同等の処理を実行しようとしています。これは可能ですか?カスタムSQLを使用する必要がありますOrmLiteの以前のバージョンでは

答えて

2

var count = db.Scalar<long>(idQuery.Select(x => Sql.CountDistinct(x.Id))); 

この変更:

var count = db.Scalar<long>(idQuery.Select("COUNT(DISTINCT Id)")); 

私はちょうどあなたが型付きAPIを使用できるようになるSql.CountDistinct in this commitのサポートを追加しましたv4.0.61から利用可能です。現在はavailable on MyGetです。

+0

Cool!ありがとうmythz! – Martaver

関連する問題