LINQ基础—OrderBy子句
LINQ基础—OrderBy子句
一、简介
适用场景:对查询出的语句进行排序,比如按时间排序等等。
说明:按指定表达式对集合排序;默认是升序,加上descending表示降序,对应的扩展方法是OrderBy和OrderByDescending。
1.对查询出来的结果集进行升序或降序排列。
2.可以指定多个键,以便执行一个或多个次要排序操作。
3.默认排序顺序为升序。
4.编译时,orderby子句将被转换为对OrderBy方法的调用。orderby子句中的多个键转换为ThenBy方法调用。
本例是一个升序的排序。
public static bool IsEven(int a){retu a % 2 == 0 ? true : false;}
var query = from a in arr where IsEven(a) orderby a select a;
如下面例子是一个降序的排序。
var query = from a in arr where IsEven(a) orderby a descending select a;
二、案例
简单形式
使用 orderby 按雇用日期对雇员进行排序:
var q =from e in db.Employeesorderby e.HireDateselect e;
说明:默认为升序排序
带条件形式
Where和Order By的顺序并不重要。而在T-SQL中,Where和Order By有严格的位置限制。
var q =from o in db.Orderswhere o.ShipCity == "London"orderby o.Freightselect o;
说明:使用where和orderby按运费进行排序。
降序
var q = from p in db.Productsorderby p.UnitPrice descendingselect p;
说明:对商品的单价进行降序排序
ThenBy
使用复合的 orderby 对客户按照City和ContactName进行排序,进行排序:
var q =from c in db.Customersorderby c.City, c.ContactNameselect c;
说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用Lambda表达式像这样写:
var q = db.Customers.OrderBy(c => c.City).ThenBy(c => c.ContactName).ToList();
在T-SQL中没有ThenBy语句,其依然翻译为OrderBy,所以也可以用下面语句来表达:
var q = db.Customers.OrderBy(c => c.ContactName).OrderBy(c => c.City).ToList();
所要注意的是,多个OrderBy操作时,级连方式是按逆序。 对于降序的,用相应的降序操作符替换即可。
var q = db.Customers.OrderByDescending(c => c.City).ThenByDescending(c => c.ContactName).ToList();
ThenByDescending
第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,这两个扩展方式都是用在OrderBy/OrderByDescending之后的,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推。
var q = db.Customers.OrderByDescending(c => c.City).ThenByDescending(c => c.ContactName).ToList();
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/14836978.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库链接,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee:https://gitee.com/mingliang_it
GitLab:https://gitlab.com/ITMingliang
进开发学习交流群:

作者:码农阿亮
来源链接:https://www.cnblogs.com/wml-it/p/14836978.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。