1

データを含む以下の表を検討してください

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 オブジェクトを返します。

4

1 に答える 1