質問: 私は&&が評価を短絡しているので、RHSを評価する必要がないのであれば評価する必要はないのですが、EFについてはどうでしょうか。 &と&&に違いはありますか(|と||も同じ)。パフォーマンス面で!
回答: > しかし、EFはどうですか? &と&&に違いはありますか(|と||も同じ)。パフォーマンス面で! > > はいあります。 まず、EF Coreがクライアント評価を使用することがあるので、短絡することはできません。 次に、サーバー評価を使用している場合でも、EF Coreはそれらを異なる方法で変換します。たとえば、SqlServerの翻訳は次のとおりです。 ``` LINQ SQL ============== ============ expr1 && expr2 expr1 AND expr2 expr1 & expr2 (expr1 & expr2) = 1 ``` これがパフォーマンスに影響するかどうかは、データベースクエリオプティマイザによって異なりますが、最初のほうが一般的には良く見えます。また、 `bool`型をネイティブにサポートしていないデータベースプロバイダによっては、かなり非効率的な翻訳を生成したり、 `&` / `|`翻訳に失敗することさえあります`|`述語 手短に言うと、できれば常に論理的な`&&`と`||`使用するLINQクエリ内の演算子。