4

我正在尝试检查是否从实体框架查询返回任何结果,然后再对其进行操作,我正在尝试使用代码:-

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

但是我得到了错误

序列不包含任何元素

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

4

2 回答 2

9

使用Any()

var shoppingCartSessions = from c in context.ShoppingCartSessions 
                           where c.UserId == gUserID 
                           select c;
if (shoppingCartSessions.Any())
{
     //not empty
}
于 2012-07-08T15:32:17.087 回答
7

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

编辑: 正如 Mahmoud Gamal 所说,使用Any()应该会带来更好的性能,因为它将执行 EXISTS 查询,而不是数据库上的 COUNT(),并且您最终并不关心确切的数量。

于 2012-07-08T15:30:49.713 回答