如果结果集为null,则Linq lambda表达式抛出错误

时间:2012-06-12 09:29:33

标签: asp.net linq entity-framework lambda

在我的项目中,我需要使用linq选择一行值

try
{
return database.Employees.Where(x => id.Equals(x.ID)).Single();
}
catch (InvalidOperationException Ix)
{
    throw;
}

使用它我将通过实体对象获得相应的行值。但是如果结果集为空则抛出错误。问题在于我的项目必须记录异常。 如何管理此代码而不会出现异常。

2 个答案:

答案 0 :(得分:5)

如果没有结果,您正在使用Single() documented来抛出异常。如果您不想要这种行为,请不要使用该方法:)

如果您使用SingleOrDefault(),如果没有结果,它将返回null。但是,如果有多个结果,它仍会抛出异常。或者,您可以使用FirstOrDefault来避免这种情况。

请注意,您也可以在Single / SingleOrDefault中指定谓词,因此您首先不需要Where来电:

return database.Employees.SingleOrDefault(x => id.Equals(x.ID));

答案 1 :(得分:1)

try
{
  return database.Employees.SingleOrDefault(x => id.Equals(x.ID));


}
catch (InvalidOperationException Ix)
{
  throw;
}