我想構建我的linq-to-sql表達式,以便它只生成單個SQL數據庫查詢。該查詢涉及兩個嵌套選擇,一個簡化版本是:構建嵌套的linq-to-sql表達式以生成單個SQL查詢
var query = from person in People
where person.ID == 1234
select new PersonDetails()
{
ID = person.ID,
FirstName = person.FirstName,
LastName = person.LastName,
Addresses = from address in Addresses
where address.PersonID == person.ID
select address
PhoneNumbers = from number in PhoneNumbers
where number.PersonID == person.ID
select number
}
該表達式將導致兩個SQL查詢被執行。第一個加入Person和PhoneNumbers表,並從它們中提取所需的信息。第二個查詢是來自Addresses表的簡單選擇。如果我註釋掉電話號碼屬性,那麼只有一個連接人員和地址的查詢會被執行,因此L2S引擎確實可以識別這兩個關係。
有沒有人有任何想法我可以如何構建LINQ表達式,以便linq-to-sql只會生成一個單一的SQL查詢?
這似乎是混合查詢表達式與擴展方法。有沒有什麼方法可以用查詢表達式來實現呢? – Jacques 2017-02-14 13:06:56