エンティティフレームワークを使用した「Col1、Col2による注文」


117

エンティティフレームワークを使用して2列で注文する必要があります。

それはどのように行われますか?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

すなわち

SELECT * FROM Foo ORDER BY Col1, Col2

回答:


244

お試しくださいOrderBy(x => x.Col1).ThenBy(x => x.Col2)。とにかく、それはEFに限定されないLINQ機能です。


50

別の方法:

qqq.OrderBy(x => new { x.Col1, x.Col2} )

このように降順で注文するにはどうすればよいですか?
user551113 2015年

10
qqq.OrderByDescending(x => new {x.Col1、x.Col2})
parfilko 2015年

7
2つの文字列フィールドでEntityFramework Coreを使用すると、「少なくとも1つのオブジェクトはIComparableを実装する必要があります」というエラーメッセージが表示されます。
sixtstorm1

26

試してください:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

降順で並べるには、次を試してください。

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

1

以下のソートはDBレベルで行われます。返された結果ではありません。

試してください:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

例1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

例2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

ここで、 IQueryable<a>エンティティクエリが、ある "col1 asc"1列であり、ソート方向は "col2 asc"、列2及びソート方向であります


-6

これはTelerikのグリッドや他のTelerikのDataSourceコンポーネントでは機能しないことに注意してください。これは事前にフィルター処理されたIQueryableオブジェクトを使用しますが、並べ替え設定を効果的にオーバーライドする最終ステップとして、並べ替えは常に自動的に行われます。

従う必要があります:グリッドでのデフォルトのソートの指定

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.