いくつかの EF データ リポジトリを実装しており、以下を含むいくつかのクエリがあります。TOP 1
.Take(1)
使用を提案する多くの投稿を読みました.First()
これらは両方ともオブジェクトの割り当てに対して同じ結果を生成することを理解していますが、実際には両方とも同じクエリに解決されますか? DB にクエリを実行すると、実際にTOP 1
は両方のリクエストに対応しますか? それとも、クエリを列挙型に完全に実行してから、コレクションの最初のエントリを取得するだけですか?
さらに、使用した場合.FirstOrDefault()
、なぜ異なる動作を期待する必要があるのでしょうか? IEnumerable を使用する場合.First()
、空のコレクションを呼び出すとスローされることはわかっていますが、これが実際にクエリを変更してインクルードするだけである場合、と....TOP 1
の間に機能的な違いはまったくないと予想する必要があります。.First()
.FirstOrDefault()
または、クエリを実行するためのこれらの列挙可能な拡張よりも優れた方法はありますTOP 1
か?