在我的项目中,我需要使用linq选择一行值
try
{
return database.Employees.Where(x => id.Equals(x.ID)).Single();
}
catch (InvalidOperationException Ix)
{
throw;
}
使用它我将通过实体对象获得相应的行值。但是如果结果集为空则抛出错误。问题在于我的项目必须记录异常。 如何管理此代码而不会出现异常。
答案 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;
}