2

ADO.Net/SQLClientでは、次のようなことをよく行います。

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

...そしてexecutescalarを使用してそれを起動し、countの値を返します-何かが存在するかどうかを簡単にチェックします。

LinqToSqlを使用して同じことをどのように行いますか?

4

3 に答える 3

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

を使用することもできますCount()

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

ただし、これには常にすべての行を通過する必要がありますがAny()、最初に一致した行の後に戻ることができるため、Any()パフォーマンスが向上する可能性があります。

于 2009-05-26T16:56:36.270 に答える
3

Linq to Sqlは遅延実行であることに注意してください。つまり、クエリは、コレクションにアクセスしたときにのみ実際に実行されます。したがって:

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

SQL側ではSELECTCount()になります。

于 2009-05-26T16:58:05.130 に答える
2

何かが存在するかどうかを確認したい場合は、任意の関数を使用できます。

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

または、実際にそのカウントを知りたい場合は、where関数とcount関数を使用できます。

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
于 2009-05-26T17:01:27.213 に答える