使用连接查询或使用LINQ魔术?

时间:2008-10-24 14:59:59

标签: c# .net .net-3.5

最好像这样做一个联合查询:

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个语句中进行以进行空检查。

这里有可读性或性能问题的最佳实践吗?

3 个答案:

答案 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,它将帮助您找出差异。