Asp.Net C#Entity Framework Distinct弄乱订单

时间:2013-10-08 14:31:52

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

我正在使用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不起作用。 请帮忙 非常感谢所有帮助! 谢谢!

1 个答案:

答案 0 :(得分:1)

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

Array.Sort(ViewBag.Versions);

Array.Reverse(ViewBag.Versions);

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