【问题标题】:Linq Ordering by Merged ColumnsLinq 按合并列排序
【发布时间】: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


【解决方案1】:

你可以用这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多