4

上記および/または他の方法を含めて、1 つのレコードを検索していて、1 つのレコードしか存在しない場合、どのレコードが最も速く実行されますか? たとえば、クエリ対象の値が見つかったら、残りのレコードを検索せずにすぐに値を返すものを探していることを確認したいと考えています。

4

2 に答える 2

1

Single (および SingleOrDefault) は、結果が 0 個または複数個ある場合に強制的に例外を発生させたい場合にのみ使用してください。典型的な SQL 実装は次のようになります。

Select Top 2 * from table

一方、First は通常、最初の一致が見つかった後に短絡します。TSQL で

Select Top 1 * from table

Any は、少なくとも 1 つの一致が見つかったかどうかを示すために使用されます (そして、一致した後に短絡します)。TSQL では、これは Exists を使用します。

あなたの場合、結果の値が必要なので、別のリクエストを(Anyで)作成してSingleを実行しても意味がありません。代わりに、FirstOrDefault を使用して、返された結果で null をチェックします。

var foo = table.FirstOrDefault(t => t.bar == val);
if (null != foo)
   ...

存在するテーブルから 1 を選択

于 2012-06-15T15:48:29.237 に答える