沿用之前某一篇文章的实体类与EF操作类代码。数据库中增加几条数据

Linq 的排序方式,下面例子是根据RoleId 升序,Name降序

EFContext<Member> efMemberContext = new EFContext<Member>();
var memberSet = efMemberContext.Set<Member>().Include("Role");
var memberList = from m in memberSet
orderby m.RoleId ascending, m.Name descending
select m; foreach (Member item in memberList)
{
Console.WriteLine("{0},Role:{1}",item.Name,item.Role.Name);
}

输出结果如下:

SQL Profiler如下:

同样的方式如果用Lambda排序,先猜想如下,

EFContext<Member> efMemberContext = new EFContext<Member>();
var memberSet = efMemberContext.Set<Member>().Include("Role");
var memberList = memberSet.OrderBy(m => m.RoleId).OrderByDescending(m => m.Name);
foreach (Member item in memberList)
{
Console.WriteLine("{0},Role:{1}",item.Name,item.Role.Name);
}

运行程序发现与linq方式的不一致,

SQL Profile如下:

发现连续调用OrderBy或者OrderByDescending之后,以最后一个为准排序,这时ThenBy就派上了用场。

ThenBy是使用OrderBy或者OrderByDescending之后,再次对结果进行二次排序

EFContext<Member> efMemberContext = new EFContext<Member>();
var memberSet = efMemberContext.Set<Member>().Include("Role");
var memberList = memberSet.OrderBy(m => m.RoleId).ThenByDescending(m => m.Name);
foreach (Member item in memberList)
{
Console.WriteLine("{0},Role:{1}",item.Name,item.Role.Name);
}

如果想数据库中多个列排序一致,可以先OrderBy(或者OrderByDescending)后ThenBy(或者ThenByDescending),也可以在OrderBy或者OrderByDescending直接指定多个属性,这样生成的SQL就是多个列的排序(排序一致asc/desc)

EFContext<Member> efMemberContext = new EFContext<Member>();
var memberSet = efMemberContext.Set<Member>().Include("Role");
var memberList = memberSet.OrderBy(m => new { m.RoleId, m.Name });
foreach (Member item in memberList)
{
Console.WriteLine("{0},Role:{1}",item.Name,item.Role.Name);
}

最新文章

  1. 使用epel源安装软件
  2. [转]C#编程总结(三)线程同步
  3. Get IP Address in Android 4.0+
  4. GridView、DataGrid、DataList、Repeater、ListView、DetailsView、FormView
  5. ionic cordova plugin for ios
  6. opengl (1) 基本API的熟悉
  7. Android常用组件【转】
  8. 计算两点距离 ios
  9. sql中Statement与PreparedStatement的区别
  10. Video Target Tracking Based on Online Learning—TLD多目标跟踪算法
  11. 设计模式之 观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)
  12. idea和androidstudio的首次git配置一些问题
  13. python---购物车
  14. 十进制转为x进制的递归代码
  15. python第四十六课——函数重写
  16. 简单记录下3PC
  17. 微软职位内部推荐-Senior PM
  18. 二、源代码=&gt;程序集及程序集概念介绍
  19. L2-022 重排链表(链表)
  20. vue总结 06组件

热门文章

  1. svn 服务器搭建 ,采用http的方式加密用户。
  2. 问题记录 | VScode中使用IntelliJ的快捷键
  3. IntelliJ IDEA使用心得之问题篇;
  4. Linux-(touch,cat,nl,more|less,head|tail)
  5. Docker运行操作系统环境(BusyBox&amp;Alpine&amp;Debian/Ubuntu&amp;CentOS/Fedora)
  6. 8分钟丨教你玩转 API
  7. 解决启动mongod 时,出现addr already in use错误
  8. mongodb int型id 自增
  9. javascript正则表达式获取控制
  10. 入门redis