Linq按合并列排序

时间:2012-06-06 13:39:20

标签: .net linq sql-order-by

我需要订购和页面Linq查询,但它应该通过订购这样的自定义列来完成: 如果我的实体Person是一名员工,它的名字来自Employee表,如果不是,它将来自表Person,并且这些不同。为此,我有一个字段返回它的名称,应用此规则,所以我需要按名称排序,然后分页查询。

问题: 这样做,需要加载所有表数据来执行此排序和分页,类似于100.000行得到10.我希望在DB中加载10行之前在DB中进行此排序工作。

有没有办法在我的查询中实现一个带有“IF”子句的命令,将工作留给DB并只加载我的10行页面?

也许是这样的:

persons.OrderBy(p => (p.Employee != null)? p.Employee.Name : p.Name).Take(10);

1 个答案:

答案 0 :(得分:0)

您可以使用此

persons.Select(p => new { Emp = (p.Employee!=null) ? p.Employee.Name : p.Name})
       .OrderBy(p => p.Emp)
       .Take(10);