我需要订购和页面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);
答案 0 :(得分:0)
您可以使用此
persons.Select(p => new { Emp = (p.Employee!=null) ? p.Employee.Name : p.Name})
.OrderBy(p => p.Emp)
.Take(10);