[英]I can't understand GroupJoin where i will need it in database relationships
我想5-6個小時了解GroupJoin的一些事情。 我正在談論用linq查詢數據庫表。我明白Join和GroupJoin的作用但是我真的無法理解我將需要它。我覺得Join會做我需要的所有東西,但如果有什么可以加入'沒有GroupJoin所以我覺得這種情況毫無意義或無用。
例如:
與電話和電話表相關的人員表持有人員的外鍵,一個人可以再擁有一個電話號碼。如果我們想要帶來所有有電話號碼且沒有電話號碼的人,我們將需要GroupJOin,但對我們來說是什么需要這個查詢嗎?
使用GroupJoin可以給我很好的理由,示例或演示嗎?
來自MSDN:
在關系數據庫術語中,Join實現了一個內部聯接,一種聯接類型,其中只返回那些在另一個數據集中具有匹配項的對象。 GroupJoin方法在關系數據庫術語中沒有直接等價,但它實現了內連接和左外連接的超集。
因此,如果您有理由在SQL中使用外連接,則可能會在Linq中將GroupJoin用於類似目的。
在SQL中,你會寫:
SELECT *
FROM Persons p LEFT JOIN Phones ph on p.PersonID = ph.PersonID
你會得到一個行列形狀,其中一些行具有空電話號碼,而某些行與其他行具有相同的Person。
Bob, null
Joe, 111-1111
Mike, 222-2222
Mike, 333-3333
Mike, 444-4444
在LinqToSql中,你會寫:
from p in Persons
join ph in Phones on p.PersonID equals ph.PersonID into phones
select new {Person = p, Phones = phones.ToList()};
你會得到每個人一個人的實例和每部手機一個手機實例,所有這些實例都是相關的。
Bob, [] <- (empty)
Joe, [111-1111]
Mike, [222-2222, 333-3333, 444-4444]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.