c# - 通过 Entity Framework 连接的多方进行排序

标签 c# entity-framework sql-order-by

我正在尝试使用 .Net 4 中的 Entity Framework 4.1 完成以下任务;

var context = new MyEntities();

var results = context.Diners
    .OrderBy(i => i.MenuItems.Course.DisplayOrder)
    .ThenBy(i => i.MenuItems.DisplayOrder);

这里的问题是 MenuItems 是一个 ObjectSet(集合),而集合没有 Course(另一个连接表)。不过,MenuItem(单数)有一个过程。希望这是显而易见的。

以下是我用来执行此操作的 SQL;

Select
    *
From
    Diner As D
Inner Join
    DinerSelection As DS -- This is the Many to Many that EF has abstracted away.
On  D.DinerId = DS.DinerId
Inner Join
    MenuItem As MI
On  DS.MenuItemId = MI.MenuItemId
Inner Join
    Course As C
On  MI.CourseId = C.CourseId
Order By
    C.DisplayOrder, MI.DisplayOrder

如果在 EF 中这不是一件容易的事情,那么我只会将其作为 View 来完成,尽管我不愿意。

最佳答案

我认为这就是您想要做的。

.OrderBy(i => i.MenuItems.SelectMany(c=>c.Course).DisplayOrder)

关于c# - 通过 Entity Framework 连接的多方进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331297/

相关文章:

c# - 如何使用 NAudio C# 更改播放速度

c# - 确定生成的类型是否为值类型

c# - Tesseract Init() 方法 C3

c# - 优化 LINQ 例程

c# - 将 EF Core 列/字段指定为只读

sql - 为什么删除 ORDER BY 会显着加快此查询的速度?

c# - 我应该如何处理 C# 中的不适当情况

entity-framework - 对数据库的更改已成功提交,但在更新对象上下文时出错

php - MYSQL 选择最后 3 行,按 ASC 排序

sql-order-by - 如何对数据进行排序/排序?