私はこれらの2つのどちらを使用するのが良いのか疑問に思っています:
1:context.Threads.Where(thread => thread.Id == threadId).Select(thread => thread.Posts).(...)
また
2:context.Posts.Where(post=> post.thread.Id == threadId).Select().(...)
2つの間に違いはありますか?
スレッドと投稿の数に加えて、両方のクエリによって生成されている SQL と、SQL プロファイラーでのそれぞれの所要時間も確認する必要があります。
補足として、私はあなたの両方の質問に質問します。私はあなたが Entity Framework を使用していると仮定しています (あなたが尋ねた他の質問に基づいて)。そのため、Post クラスには既にそのテーブルに ThreadID が含まれている必要があります (ここに表示されるナビゲーション プロパティに基づいて、あなたはデータベースの Post テーブルに ThreadID フィールドが必要です)。その場合、次のクエリがニーズにより適している可能性があります。
context.Posts.Where(p => p.threadID == threadId);
これを行うと、Threads テーブルに関する記述が削除されます。つまり、EF は、要求している情報を取得するために結合ステートメントを使用する必要がありません。その Threads テーブルは含まれないため、これが 1 つのスレッドからすべての投稿を取得する最速の方法です。
スレッド数と投稿数によって異なります。