【发布时间】:2020-12-21 01:20:10
【问题描述】:
我目前得到了下面的 SQL 代码:
WITH region_list
AS (SELECT r.StateProvinceRegion,
r.CafeId,
s.Longitude,
s.Latitude,
ROW_NUMBER() OVER(PARTITION BY r.StateProvinceRegion
ORDER BY s.Longitude DESC) AS row_no
FROM CafeAddress r
inner join Restaurant s on s.CafeId = r.CafeId
)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS ID,
StateProvinceRegion,
Longitude,
Latitude
FROM region_list
WHERE row_no = 1;
我将如何添加此查询?在下面的方法中,我实现了类似的东西,但我不明白如何添加 WITH 子句。
public VersionResponse GetCafeRegion()
{
var regionList = from cafeAddress in _context.CafeAddress
join cafe in _context.Cafe on cafeAddress.CafeId equals cafe.CafeId
select new { cafeAddress.StateProvinceRegion, cafeAddress.CafeId, cafe.Longitude, cafe.Latitude };
return new VersionResponse()
{
Data = regionList
};
}
【问题讨论】:
-
是实体框架还是 Linq?无论哪种方式添加正确的标签 - 它与 ASP.NET Core 本身无关。
-
两个帐户?是的,我会删除标签
-
添加正确的标签...几个小时前您在您的 James 帐户下发布了这个确切的问题...
-
您要转换的不是 C#,而是 Linq(我认为 - 或 EF)。
-
这看起来像是一个利用特定 T-SQL 功能的高度优化的查询。 (
WITH,ROW_NUMBER() OVER (ORDER BY (SELECT 1)), ...) 我不知道它是否可以转换为产生 exact 相同 SQL...
标签: sql sql-server entity-framework linq