【问题标题】:EF sorting results without order by clause没有 order by 子句的 EF 排序结果
【发布时间】:2014-05-07 19:35:33
【问题描述】:

在我的 asp.net mvc 应用程序中,我使用实体框架返回数据列表。返回的数据按升序排列,即使我的 linq 语句中没有 order by 子句:

using (TNTContext tnt = new TNTContext())
    {
        var result = tnt.Wave.Include("Terminals").ToList();
    }

我检查了sql server profiler,果然:

默认情况下,LINQ(或我不确定的实体框架)对我的结果进行排序。有没有办法关闭它?

【问题讨论】:

  • 是的,添加你自己的order by
  • @TMcKeown 我希望以与数据库中相同的顺序返回结果。
  • @broke,数据库中没有顺序,没有 order by 的简单选择,会以不确定的顺序返回记录。
  • 这不是一个可靠的请求。 ORDER BY 由计划决定。如果计划决定使用索引,那么您将基于该索引获得结果,其他执行可能会使用不同的计划,从而使用不同的顺序。你最好添加一个 ORDER BY
  • @Habib 我的 LINQ 语句没有...

标签: c# entity-framework entity-framework-5


【解决方案1】:

如果我不是,它正在做 order by,因为它正在尝试连接两个表以获取相关数据

var result = tnt.Wave.Include("Terminals").ToList();

当您说“包含”时,它将尝试将 Wave 表与 Terminals 表连接起来,并且在连接查询的情况下,如果数据是有序的,则会得到优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多