2

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

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

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

4

2 回答 2

5

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

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

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

return database.Employees.SingleOrDefault(x => id.Equals(x.ID));
于 2012-06-12T09:31:36.880 回答
1
try
{
  return database.Employees.SingleOrDefault(x => id.Equals(x.ID));


}
catch (InvalidOperationException Ix)
{
  throw;
}
于 2012-06-12T09:34:36.377 回答