使用LINQ(到实体)查询对象的存在

Sla*_*uma 3 .net linq linq-to-entities

(我在括号中加上"...... to Entities",因为我不知道这是否重要.我想这是一个非常普遍的LINQ相关问题.)

如果数据库中存在对象,我想检查LINQ(实体).目前我正在做以下事情:

using (MyEntitiesContext aCtx = new MyEntitiesContext())
{
    var aQuery = from c
                 in aCtx.Client
                 where c.ClientID==1
                 select c;

    Client aClient = aQuery.FirstOrDefault();

    bool Exists = (aClient!=null);
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是(如果我没错),这将从数据库加载完整的Client对象(如果客户端存在).我实际上只关心它是否存在而不加载对象.

SQL有SELECT COUNT(*)...构造.有什么类似的东西我可以用LINQ吗?

谢谢你的建议!

小智 7

一种选择是使用 IQueryable 的Any方法.它将返回一个布尔值,指示是否找到与指定条件匹配的对象.

using (MyEntitiesContext aCtx = new MyEntitiesContext())
{
    bool exists = (from c
                   in aCtx.Client
                   where c.ClientID==1
                   select c).Any();
}
Run Code Online (Sandbox Code Playgroud)

一旦计算结果为true,此方法也将停止运行.