2008-10-24 66 views
3

是做的比较好这样的连接查询:查询加入或使用LINQ魔术?

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(); 

或者是它一样好做一件容易的事情,做这个(用null检查):

var employer = (from person in db.People 
        where person.PersonID == idPerson 
        select person).FirstOrDefault().Employer; 

显然,这一个我实际上必须在2个报表中进行空检查。

对于可读性或性能问题,是否有任何一种最佳实践?

回答

6

我会使用这样的:

var employer = (from person in db.People 
       where person.PersonID == idPerson 
       select person.Employer).FirstOrDefault(); 

它得到的第一个版本的简单,但仍然只获取数据为雇主(而不是人雇主)。

1

第二个可以评估为null,这会导致错误。

我喜欢第一个更好,因为如果它是空的,那么你可以处理它而不会引发异常。

1

我发现第一个更好阅读,但我不确定实现的差异。

我强烈建议使用LinqPad来查看生成的SQL,这将帮助您找出差异。