我是新來的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