データを含む以下の表を検討してください
Customers -> Orders -> Items
Customers ->
A
B
C
Orders ->
o1 - A,
o2 - A,
o3 - B,
o4 - C
OrderItems ->
o1 - Item1,
o1 - Item2,
o2 - Item3,
o3 - Item2,
o4 - Item1
Item ->
Item1,
Item2,
Item3,
Item4
DB には、上記と同様のマッピングがあります。今linqで、コンマで区切られたアイテムでソートされた顧客のリストを取得したいと思います。
Customer Items
C Item1
A Item1, Item2
B Item2
私はこのようなことを試しました
Customer.OrderBy( cust => string.Join(",", cust.Orders
.SelectMany( order=>order.OrderItems)
.Select( orderItem=> orderItem.Item.Name)
.OrderBy(item=>item)));
ただし、string.Join は linq ステートメント内では許可されていません。グリッドにアイテムを表示する必要はありませんが、コンマ区切りのアイテムで並べ替えられた顧客を取得する必要があります。
また、他のフィルターが追加され、後で実行される IQueryable 顧客オブジェクトで並べ替えを行う必要があるため、これを UI レベルで実行したくありません.. IQueryable 顧客オブジェクトを使用した linq orderby クエリで、IQueryable オブジェクトを返します。