2

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を使用して、セット内のすべての要素を調べて一致数を数えることなく、条件に一致するアイテムがセットに含まれているかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

14

あなたは試すことができます

if (Products.Any(c => c.ProductId = 1234))
{
//do stuff
}

ifが存在するかどうかはわかりませんが、何が送信されるかを試してみることができます。

于 2010-07-19T09:08:14.797 に答える
1

状態をチェックしようとしている場合は、次のコードを使用できます

if(Products.Any(p => p.ProductID == 1234))
{
    //do sth
}

ただし、p.ProductID == 1234のような条件なしで行が存在するかどうかを確認する場合は、次のようにする必要があります。

if(Products.Any(p => p != null))
{
//do sth
}
于 2014-01-28T05:24:25.430 に答える