在此示例代码中

public Company GetCompanyById(Decimal company_id)
{
    IQueryable<Company> cmps = from c in db.Companies
                               where c.active == true &&
                                     c.company_id == company_id
                               select c;
    return cmps.First();
}

如果cmps中没有没有数据,我该如何处理?
cmps 永远不会为空,因此如何检查 LINQ查询中不存在的数据?

所以我可以避免
'cmps.ToList()' threw an exception of type ... {System.NullReferenceException}

将其转换为例如列表
GetCompanyById(1).ToList();

是否总是需要才能将其包装在try catch块中?

最佳答案

您可以使用Queryable.Any()(或Enumerable.Any())查看cmps中是否存在成员。这将使您进行显式检查,并根据需要进行处理。

如果您的目标是在没有匹配项的情况下仅返回null,则只需在返回语句中使用FirstOrDefault而不是First:

return cmps.FirstOrDefault();

10-08 02:18