簡體   English   中英

LINQ,我應該加入還是使用嵌套的SELECT NEW

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

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