IEnumerable.Contains()
メソッドは述語を引数として受け入れないため、ほとんどの人は次のコードを使用して、条件に一致するものの存在を確認します。
// ProductId is unique.
if (Products.Count(c => c.ProductId = 1234) == 1)
{
// Products list contains product 1234.
}
このコードは、すべての製品をウォークスルーし、それが一致するかどうかを確認するように強制します。本当にそうする必要はありません。
Linq-to-SQLで生成されたSQLコードを見ると、同じ問題があります。のselect count(*) ... where ProductId = @p0
代わりにステートメントが送信されif exists
ます。
Linqを使用して、セット内のすべての要素を調べて一致数を数えることなく、条件に一致するアイテムがセットに含まれているかどうかを確認するにはどうすればよいですか?