如何使用VB.Net lambda表达式按多列排序

cam*_*inc 18 linq vb.net lambda linq-to-sql

我已经对这个网站进行了简短的搜索,然后搜索了这个,但似乎找不到一个好的例子.我仍然试图绕过整个"Lambda表达式"的事情.

这里的任何人都可以使用一个lambda表达式使用VB.Net和Linq-to-SQL为多个列排序示例吗?

这是我现有的代码,它使用单列返回有序列表来排序结果:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).ToList
Run Code Online (Sandbox Code Playgroud)

注意:WebCategory对象具有子WebPage对象(基于外键).我想首先通过WebPage.DisplayOrder订购,然后通过WebCategory.DisplayOrder订购.

我尝试将顺序链接起来,如下所示,虽然它编译并运行,但它似乎没有按我想要的顺序返回数据.

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).OrderBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList
Run Code Online (Sandbox Code Playgroud)

提前致谢.

HuB*_*eZa 41

我在Google快速搜索中发现了这篇MSDN文章.我想你想要的是这个:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder). _
ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList
Run Code Online (Sandbox Code Playgroud)


Met*_*ght 13

你应该像这样使用ThenBy:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder) _
                               .ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder) _
                               .ToList()
Run Code Online (Sandbox Code Playgroud)