簡體   English   中英

我無法理解GroupJoin在數據庫關系中我將需要它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM