-1

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

问题:这样做,需要加载所有表数据来执行此排序和分页,例如 100.000 行以获得 10。我想在 DB 中进行此排序工作,然后在 EF 中加载我的 10 行。

有什么方法可以在我的查询中使用“IF”子句实现排序,将工作留给数据库并仅加载我的 10 行页面?

也许是这样的:

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

4

1 回答 1

0

你可以用这个

persons.Select(p => new { Emp = (p.Employee!=null) ? p.Employee.Name : p.Name})
       .OrderBy(p => p.Emp)
       .Take(10);
于 2017-05-11T11:03:11.743 回答