在ADO.Net/SQLClient中,我经常这样做:
SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234
...并使用executioncalar触发它来返回count的值 - 以便在存在某些内容时进行简单检查。
我如何使用LinqToSql做同样的事情?
答案 0 :(得分:6)
if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
DoStuff();
}
您也可以使用Count()
。
if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
DoStuff();
}
但是,这需要始终遍历所有行,Any()
可以在第一个匹配行之后返回 - 因此Any()
可能会有更好的效果。
答案 1 :(得分:3)
请记住,Linq to Sql是延迟执行,这意味着,查询仅在您访问集合时实际执行。因此:
var q = (from p in db.SomeTable
where p.SomeKey == 1234
select p).Count();
将在SQL方面变成SELECT Count()。
答案 2 :(得分:2)
如果您想查看是否存在某些内容,可以使用any函数:
if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
return true;
}
或者如果你真的想知道这个计数你可以使用where函数和count函数:
context.SomeTable.Where(i=> i.SomeKey == 1234).Count();