[英]LINQ, Should I JOIN or use nested SELECT NEW's
我必須低於2個LINQ語句。 它們都返回(看似)相同的結果集。 任何人都可以向我解釋為什么我應該使用一種方式與另一種方式? 它就像“你說土豆,我說土豆;你說番茄,我說番茄”一樣簡單嗎?
以下是LINQ的兩種風格 - >
1)這兩個lets
下面是該拿的ID,並返回名稱的私有方法。
var business = from businesse in context.tblBusinesses
where businesse.BusinessID == businessID
join addresse in context.tblAddresses on businesse.BusinessID equals addresse.BusinessID
let stateName = GetStateNameByID(addresse.StateID)
let countyName = GetCountyNameByID(addresse.CountyID)
select new
{
businesse.BusinessName,
businesse.ContactName,
businesse.EmailAddress,
addresse.AddressLine1,
addresse.AddressLine2,
addresse.AddressLine3,
addresse.CityName,
State = stateName,
addresse.ZipCode,
addresse.ZipPlus,
County = countyName
};
2)
var query = from businesse in context.tblBusinesses
where businesse.BusinessID == businessID
select new
{
businesse.BusinessName,
businesse.ContactName,
businesse.EmailAddress,
Address = from addresse in businesse.tblAddresses
select new
{
addresse.AddressLine1,
addresse.AddressLine2,
addresse.AddressLine3,
addresse.CityName,
State = addresse.StateID,
addresse.ZipCode,
addresse.ZipPlus,
County = addresse.tblAdminCounty
}
};
當您觀察sql server探查器時,您會看到第二個創建了許多查詢,但第一個查詢獲取了一個查詢中的所有數據。 所以第一個更有效率。
你確定他們給出了相同的結果嗎?
看起來第一個示例會將您的Address
屬性展平為多個屬性,而您的第二個示例將具有一個本身包含屬性的Address
屬性。
但除此之外,我會說加入和“內部選擇”之間的區別將取決於個人偏好。 我可能更喜歡使用連接,因為我習慣於編寫SQL並且在那里使用單詞join
會使您的意圖變得明顯。 但我也沒有看到使用內部選擇的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.