LinqToSql中的标量函数

时间:2009-05-26 16:54:58

标签: .net linq-to-sql scalar

在ADO.Net/SQLClient中,我经常这样做:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

...并使用executioncalar触发它来返回count的值 - 以便在存在某些内容时进行简单检查。

我如何使用LinqToSql做同样的事情?

3 个答案:

答案 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();