最好像这样做一个联合查询:
var employer = (from person in db.People
join employer in db.Employers
on person.EmployerID equals employer.EmployerID
where person.PersonID == idPerson
select employer).FirstOrDefault();
或者这样做很容易做到这一点(使用空检查):
var employer = (from person in db.People
where person.PersonID == idPerson
select person).FirstOrDefault().Employer;
显然,在这个实际上,我实际上必须在2个语句中进行以进行空检查。
这里有可读性或性能问题的最佳实践吗?
答案 0 :(得分:6)
我会用这个:
var employer = (from person in db.People
where person.PersonID == idPerson
select person.Employer).FirstOrDefault();
它具有第一版的简单性,但仍然只为雇主提取数据(而不是和雇主)。
答案 1 :(得分:1)
第二个可以评估为null,这将导致错误。
我更喜欢第一个,因为如果它是null,那么你可以处理它而不会抛出异常。
答案 2 :(得分:1)
我发现第一个更好阅读,但我不确定实施方面的差异。
我强烈建议您使用LinqPad查看生成的SQL,它将帮助您找出差异。