私は3つのテーブルを持っています。
- ユーザー (フィールド: ユーザー ID と名前)
- MonthsMap (フィールド: UserId、Month、orderId)
- OrderTable (フィールド: OrderId、注文数量など)
私の要件は次のとおりです。
ユーザーが 11 月の注文を持っている場合は 11 月の注文を表示し、それ以外の場合は 10 月の注文を表示します。
現在、私がやっていることは
foreach(user)
{
join User table with MonthsMap table where month = november
if( result is null )
{
join User table with MonthsMap table where month = october join order table to get October order details
}
else
{
join User table with MonthsMap table where month = november join order table to get november order details
}
}
各ユーザーの繰り返しに使用される for ループのように、多くの時間がかかります。Linq to SQL を使用していますが、単一のクエリですべてのユーザーの注文を取得するために使用できるより良い Linq オプションはありますか。
すべての回答に感謝しますが、私の例があなたを少し混乱させて申し訳ありません。正確なシナリオはこのようなもので、ユーザーはさまざまなタイプの注文 (例: 通常の注文と緊急注文) を持つことができます。したがって、months_map テーブルの代わりに、オーダー マップ テーブルを使用します (フィールド ユーザー ID、order_type("通常/緊急/非常に緊急")、order_id)
したがって、私のアプリケーションでは、すべてのユーザーの注文をユーザー テーブルに一覧表示する必要があります。
リスティングは、
- ユーザーが非常に緊急の注文をしている場合、アプリケーションは非常に緊急の注文のみを表示する必要があります
- それ以外の場合、ユーザーが緊急の注文を持っている場合、アプリケーションは彼の緊急の注文のみを表示する必要があります
- それ以外の場合、ユーザーが通常の注文をしている場合、アプリケーションは通常の注文のみを表示する必要があります
- それ以外の場合は、ユーザー名のみを表示し、注文の詳細は空白のままにします。