ADO.Net/SQLClientでは、次のようなことをよく行います。
SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234
...そしてexecutescalarを使用してそれを起動し、countの値を返します-何かが存在するかどうかを簡単にチェックします。
LinqToSqlを使用して同じことをどのように行いますか?
ADO.Net/SQLClientでは、次のようなことをよく行います。
SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234
...そしてexecutescalarを使用してそれを起動し、countの値を返します-何かが存在するかどうかを簡単にチェックします。
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側ではSELECTCount()になります。
何かが存在するかどうかを確認したい場合は、任意の関数を使用できます。
if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
return true;
}
または、実際にそのカウントを知りたい場合は、where関数とcount関数を使用できます。
context.SomeTable.Where(i=> i.SomeKey == 1234).Count();