为了获取记录列表,我通常会执行以下操作:
var efCompany = from a in _dbRiv.Company where a.CompanyId == companyFeedInfo.CompanyId select a;
为了获取单个记录,当我知道我正在使用 PK 来检索它时,我会使用如下内容:
var efCompany = (from a in _dbRiv.Company where a.CompanyId == companyFeedInfo.CompanyId select a).First();
现在,使用单记录方法,如果 PK 是一个错误值(就像在测试中故意这样),第二行会抛出错误。
是什么最佳实践获取单个记录并处理它的方法?
Use SingleOrDefault
如果您期望 0 或 1,或者FirstOrDefault
如果您只需要潜在的许多记录中的第一条记录,但可以处理 0。如果没有结果,两者都会返回类型的默认值(通常为 null)。
顺便说一下,这样的查询通常更具可读性(IMO)without使用查询表达式,因此您可能会得到如下结果:
var efCompany = _dbRiv.Company
.Where(a => a.CompanyId == companyFeedInfo.CompanyId)
.SingleOrDefault();
if (efCompany != null)
{
// Use it
}
else
{
// Report to user, or whatever
}
当您使用多个运算符或执行相对复杂的操作(例如连接)时,查询表达式非常有用 - 但如果您已经just got a where
条款或just得到一个投影,这个“点符号”在我看来更简单。当您需要调用类似方法时,它也能更好地工作FirstOrDefault
在最后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)