我是新来的LINQ,两种环境下使用时对象,并有一个关于from
条款问题:外连接LINQ
1)进行交叉连接,如查询波纹管
var q1 = from person in people
from job in jobs
select new {person, job}
2)以执行一个外部联接
var q2 = from person in people
join pet in pets on person equals pet.Owner into gj
from subpet in gj
select new { OwnerName = person.FirstName, PetName = subpet.Name };
确实从子句第二充当交叉连接或它取决于上下文中计算的?因为 Q1会产生people.Count * jobs.Count元件 但Q2将产生仅people.Count
对于查询'q1'来说,第二个'from'充当来自人员和来自作业的元素之间的交叉连接,第二个查询的情况如何? – 2012-02-04 13:28:57
在我看来,'from'子句不是作为交叉连接,而是select。 'from'只是进行交叉连接的手段,因为它提供了序列中的元素。在第二个示例中,您将person-pet内部联接生成为gj,并使用第二个“from”从结果集中选择每个元素,仅此而已,没有什么更少的。要执行一个左外连接,你应该为没有宠物的人替换正确的值(来自gj set)。 – 2012-02-04 13:47:06
是否意味着'from'作为foreach循环,而第二个'from'是第一个内部foreach? – 2012-02-04 14:08:42