2009-11-16 14 views
18

私はこのサイトの簡単な検索を行い、これを検索しましたが、良い例は見つけられません。私はまだ、 "ラムダ式"のことを考えています。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 

ありがとうございます。

答えて

39

Google検索でthis MSDN articleが見つかりました。 私は何をあなたが探してはこれです推測:

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

おかげで、それは私が探していただけのものです。 私が聞いたことがある場合は、その記事を検索する際に使用したGoogle検索用語は何ですか? – camainc

+1

うわー、私は(私が思ったのは)正確にこれを行っていて動作しませんでした、私は何らかの種類のLinq関連の例外を取得していました...信じられないほど欲求不満になりました...そして、私は最後の " "部分。私はそれが正しいデータ型である必要があることを振り返って明らかですが、私はそれらの "木の森"の瞬間の1つを持っていたと思います。情報のおかげで! – evilspoons

12

あなたはこのようThenByを使用する必要があります。

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

ありがとう!あなたはHuBezaと同じ時間にこれに答えましたが、すでに彼より多くのバッジがあるので、私は彼に答えました。 – camainc

+0

BTW:独自のIComparerが必要な場合は、2回使用する必要があります(.OrderByでは1回、.ThenByコマンドでは1回)。 'MyOwnIComparer'とあなたのクラスのコードをMyOwnIComparerという名前で追加してください – PeterCo

関連する問題