在ADO.Net/SQLClient我会经常做这样的事情:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

...和使用的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到SQL是延迟执行,这意味着,当你访问集合的查询只实际执行。因此:

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

会变成一个SELECT COUNT()对事物的SQL侧。

如果您想看看是否有存在,你可以使用任何功能:

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

或者,如果你真的想知道那算不算你可以使用其中的功能和计数功能:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top