【问题标题】:Asp.Net C# Entity Framework Distinct messes up OrderAsp.Net C# Entity Framework Distinct 打乱了顺序
【发布时间】:2013-10-08 14:31:52
【问题描述】:

我正在使用 C3 和 Razor 引擎处理 ASP.Net MVC4 应用程序! 我有一个名为 builds 的数据库,其中包含各种列,例如版本、创建日期。

数据库有双版本,即 4.0.230、4.0.230、4.0.229、4.0.229。这是因为要告诉哪个版本对应哪个环境。比如版本是X64等。

所以每个环境都有一个版本。

我有一个实体框架行要求检索最近 10 个构建:

var lastVersions = db.Builds.OrderByDescending(b => b.CreationDate).Take(10).Select(b=>b.Version);

所以我按创建日期排序并取最后 10 个 看起来像这样 4.0.240 4.0.240 4.0.239 4.0.239 4.0.238 等等

然后用这行代码:

ViewBag.Versions = lastVersions.Distinct().ToArray();

我想要:[4.0.240, 4.0.239, 4.0.238, 4.0.237, 4.0.236] 但我得到:[4.0.236, 4.0.237, 4.0.238, 4.0.239, 4.0.240]

基本上 OrderbyDescending 不起作用。 请帮忙 非常感谢所有帮助! 谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc-4 entity-framework-4 sql-order-by distinct


    【解决方案1】:

    没有看到您的数据库,看起来您的 OrderByDescending 确实有效,但您实际上需要订购两次。第一次,您按创建日期排序以获得最近的 10 个构建,但是在选择之后,填充到 var 时不再保证顺序。您必须再次按版本号排序。假设 ViewBag.Versions 是一个字符串 [],你可以这样做:

    Array.Sort(ViewBag.Versions);

    Array.Reverse(ViewBag.Versions);

    如果它们最初是按升序排列的。

    【讨论】:

    • 非常感谢!!我错过了这么简单的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多