質問

ADO.Net/SQLClientでは、私は多くの場合、このような何かをするだろう

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

...とcountの値を返すためには、ExecuteScalarを使用してそれを発射する - 。簡単なチェックのために何かが存在する場合は、

私はどのように行うのと同じ使用LinqToSql?

役に立ちましたか?

解決

if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
    DoStuff();
}

またCount()を使用することができます。

if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
    DoStuff();
}

しかし、これはAny()は、最初に一致した行の後に返すことができますが、すべての行を通過することは常に必要です - そうAny()は、より優れた性能を持っているかもしれません。

他のヒント

LINQ to SQLのは遅延実行、あなたがコレクションにアクセスする場合を意味し、唯一実際にクエリが実行され、覚えておいてください。したがってます:

var q = (from p in db.SomeTable
        where p.SomeKey == 1234
        select p).Count();

物事のSQL側のSELECT COUNT()に変わります。

あなたが何かは、あなたが任意の関数を使用することができますが存在するかどうかを確認するために探している場合:

if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
    return true;
}

またはあなたが実際にあなたがどこ機能とカウント機能を使用できる回数を知りたい場合は:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top