我需要订购和分页 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);