【发布时间】:2017-06-30 05:19:39
【问题描述】:
请帮我把下面的查询转换成 LINQ 语法。
select am.areaid, am.AreaName, MAX(am.pincode),count(ua.ApartmentID) from areamaster am
inner join MerchantServiceAreas msa on am.areaid = msa.areaid
left join apartmentmaster apm on am.areaid = apm.areaid
left join useraddress ua on apm.apartmentid = ua.apartmentid
group by am.areaid,am.areaname
我尝试了以下语法但不起作用
(from ar in Entities.AreaMasters
join mrs in Entities.MerchantServiceAreas on ar.AreaID equals mrs.AreaID
join ap in Entities.ApartmentMasters on mrs.AreaID equals ap.AreaID into apl
from ap1 in apl.DefaultIfEmpty()
join ua in Entities.UserAddresses on ap1.ApartmentID equals ua.ApartmentID into ual
from ua1 in ual.DefaultIfEmpty()
where mrs.MerchantID == MerchantID
group ar
by new
{
ar.AreaID,
ar.AreaName,
ar.Pincode
} into uag
select new AreaComplex
{
AreaID = uag.Key.AreaID,
AreaName = uag.Key.AreaName,
}).ToList();
【问题讨论】:
-
什么不起作用?意外结果、异常?
-
意外结果
-
那么请描述更多。解释您的数据是什么样的、您目前正在获得什么以及您期望获得什么
-
ORM 不用于执行报告查询。将此报告查询转换为 LINQ 是个坏主意。您需要所有这些代码这一事实是一个非常非常强烈的警告,表明您做错了
-
至少创建一个隐藏连接并仅显示报告所需列的视图。将 EF 映射到该查询,因此您可以创建一个不需要任何连接的简单 LINQ 查询。
标签: c# asp.net-mvc entity-framework linq sql-server-2008