【发布时间】:2012-06-10 12:54:21
【问题描述】:
我需要订购和分页 Linq 查询,但应该通过订购这样的自定义列来完成: 如果我的实体 Person 是员工,它的名称来自表 Employee,如果不是,它将来自表 Person,并且这些不同。为此,我有一个返回其名称的字段,应用此规则,因此我需要按名称排序,然后分页查询。
问题: 这样做,需要加载所有表数据以执行此排序和分页,例如 100.000 行以获得 10。我想在 EF 中加载我的 10 行之前在 DB 中进行此排序工作。
有什么方法可以在我的查询中使用“IF”子句实现 order by,将工作留给数据库并仅加载我的 10 行页面?
可能是这样的:
persons.OrderBy(p => (p.Employee != null)? p.Employee.Name : p.Name).Take(10);
【问题讨论】:
-
如果你得到了你想要的信息,别忘了把它标记为接受......
-
呃...您自己发布了解决方案?!那有什么问题呢?
-
stackoverflow.com/questions/3007470/… 还有,三进制在sql中会被翻译成CASE WHEN。
标签: .net linq sql-order-by