【问题标题】:OrderBy() removes items from a queryOrderBy() 从查询中删除项目
【发布时间】:2015-12-27 08:10:18
【问题描述】:

我刚刚发现,在 EF7 RC1 OrderBy() 语句中,如果导航属性为空,则从查询中删除项目。

var units = db.Units.Include(i => i.VehicleModel).OrderBy(u => u.VehicleModel.Displacement);

我在 db.Units 中有 23 个项目,其中三个将 VehicleModel 导航属性设置为 null。结果 units 将只有 20 个项目。

这是一个错误还是设计使然?如何更改项目不消失的代码?

【问题讨论】:

    标签: asp.net-core-mvc entity-framework-core


    【解决方案1】:

    这行得通吗?

    .OrderBy(u => u.VehicleModel == null ? 0 : u.VehicleModel.Displacement)
    

    【讨论】:

    • 存在编译错误“运算符||不能应用于'bool'和'init'类型的操作数
    • 它现在可以编译,但结果是一样的 - 列表中缺少项目。
    • 在您提出建议之前使用 ToList() 有效。即:.ToList().OrderBy(u => u.VehicleModel == null ? 0 : u.VehicleModel.Displacement)
    • 这意味着查询没有被数据库执行,而是在内存中执行......(好吧,无论如何,查询的排序部分)
    猜你喜欢
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2021-10-19
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多