检查Entity Framework linq结果中的项目

Joh*_*ell 4 c# linq entity-framework-4

我试图检查是否有任何结果是从实体框架查询返回之前采取行动,我正在尝试使用代码: -

var shoppingCartSessions = from c in context.ShoppingCartSessions where c.UserId == gUserID select c;
if (shoppingCartSessions.First() != null)
{
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误

序列不包含任何元素

我已经检查了堆栈,发现我可以替换.First,.FirstOrDefault但是我想检查这是否是检查元素是否存在的正确方法.有没有更好的方法而不是尝试获取项目然后检查它?

Mah*_*mal 8

用途Any():

var shoppingCartSessions = from c in context.ShoppingCartSessions 
                           where c.UserId == gUserID 
                           select c;
if (shoppingCartSessions.Any())
{
     //not empty
}
Run Code Online (Sandbox Code Playgroud)


Pab*_*meo 7

你试过检查了.Count() > 0吗?

编辑: 正如Mahmoud Gamal所说,使用Any()应该呈现略微更好的性能,因为它将执行EXISTS查询,而不是DB上的COUNT(),并且您最终不关心确切的数量.