LINQ 多重排序依据

Posted

技术标签:

【中文标题】LINQ 多重排序依据【英文标题】:LINQ Multiple Order By 【发布时间】:2011-06-07 19:12:00 【问题描述】:

我有 3 个表格小册子、类别和程序。 Pamphlet 表有一个 CategoryID 和 ProgramID 列。以下代码有效:

var pamphlets = db.Pamphlets.Include("Category").Include("Program").ToList();

我需要做的是按 CategoryName(Category 表)和 PamphletName(Pamphlet 表)排序。

【问题讨论】:

Multiple "order by" in LINQ的可能重复 【参考方案1】:

您只需将调用链接到 ThenBy():

var sortedPamphlets = db.Pamphlets.Include("Category").Include("Program")
                        .OrderBy(p => p.Category.CategoryName)
                        .ThenBy(p => p.PamphletName)
                        .ToList();

【讨论】:

ToList 之前放置OrderBy 给数据库一个机会不是更好吗? @Snowbear JIM-compiler - 我们同时有同样的想法。在我看到您的评论之前进行了更改。 谢谢!我真的很感激。我知道这一定很简单。【参考方案2】:

怎么样:

var pamphlets = (from p in db.Pamphlets.Include("Category").Include("Program")
                orderby p.Category.CategoryName, p.PamphletName
                select p).ToList();

【讨论】:

【参考方案3】:

试试这个:

var pamphlets = (from i in db.Pamphlets.Include("Category").Include("Program")
                 orderby i.Category.CategoryID, i.PamphletName
                 select i).ToList();

【讨论】:

以上是关于LINQ 多重排序依据的主要内容,如果未能解决你的问题,请参考以下文章

JVM技术专题 深入分析字节码指令重排序技术「原理篇」

Java内存模型之重排序

为什么代码会重排序?

为什么代码会重排序?

JS中数组重排序方法

指令重排序导致的可见性问题