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