web-dev-qa-db-ja.com

VB.Netラムダ式を使用して複数の列で並べ替える方法

このサイトを簡単に検索してグーグルで検索しましたが、良い例が見つからないようです。私はまだ「ラムダ式」全体に頭を悩ませようとしています。

ここで誰かが、ラムダ式を使用してVB.NetとLinq-to-SQLを使用した複数の列による順序付けの例を教えてもらえますか?

これが私の既存のコードで、結果を順序付けるために単一の列を使用して順序付けられたリストを返します。

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).ToList

注: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

前もって感謝します。

18
camainc

クイックGoogle検索で このMSDN記事 を見つけました。私はあなたが探しているものはこれだと思います:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder). _
ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList
41
HuBeZa

次のように ThenBy を使用する必要があります。

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder) _
                               .ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder) _
                               .ToList()
13
Meta-Knight