ServiceStack.OrmLite 筆記10-group having 分頁orderby等


group having 分頁等

var ev = OrmLiteConfig.DialectProvider.SqlExpression ();


group的使用
同sql一樣,注意group分組的字段要在select里

ev.Select(c => new { c.Birthday, c.Active }).Where(rn => rn.Birthday >= new DateTime(year, 1, 1) && rn.Birthday <= lastDay).GroupBy(rn => new { rn.Birthday,rn.Active});


having的使用

ev.Select(c => new { c.Birthday, c.Active }).Where(rn => rn.Birthday >= new DateTime(year, 1, 1) && rn.Birthday <= lastDay).GroupBy(rn => new { rn.Birthday, rn.Active }).Having(x=>Sql.Max(x.Rate)>5);


orderby 排序
一升一降 先降后升 ordered by Rate Descending and Name Ascending
ev.Where().OrderBy(rn => new { at = Sql.Desc(rn.Rate), rn.Name })
也可以用這個OrderByDescending


Limit 分頁
其實就是skip 然后take
ev.Limit(5); 默認是take 即top 5
ev.Limit(0, 4);// first page, page size=4;
ev.Limit(4, 4);// second page
ev.Limit().OrderBy(); // clear limit, clear orde

 ToCountStatement 總數
  var expr = db.From<LetterFrequency>() .Join<LetterFrequency, LetterStat>() .Where<LetterStat>(x => x.Id > 0);

var rscount= expr.ToCountStatement();//獲取expr表達式結果的總數


 ev.SelectDistinct(r => r.City);
 ev.Select(r => Sql.As(Sql.Max(r.Birthday), "Birthday")); //列別名Birthday
 var r2 = db.Scalar<Author, DateTime>(e => Sql.Max(e.Birthday));Author表 DateTime類型

聯接
LeftJoin

db.Column < string > ( db.From < TableA > ()
.LeftJoin < TableB >((a, b) => a.Id == b.Id)
.Where < TableB > (b => b.Id == null)
.Select(a => a.Name));

Join

db.From < TableA > ()
.Join < TableB > ()
.OrderBy(x => x.Id);

CrossJoin

db.From < CrossJoinTableA > ()
.CrossJoin < CrossJoinTableB >()
.OrderBy < CrossJoinTableA >(x => x.Id)
.ThenBy < CrossJoinTableB >(x => x.Id);




調試

db.GetLastSql().Print();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM