【发布时间】:2012-09-11 11:37:08
【问题描述】:
这是我正在尝试将其转换为 LINQ 实体查询的 T-SQL....
SELECT [a].[ModLimit], [b].[NumberOfMods]
FROM [dbo].[Site][a]
INNER JOIN
(
SELECT [SiteId], ISNULL(COUNT(*),0) AS [NumberOfMods]
FROM [dbo].[Users][a]
WHERE [a].[IsMod] = 1
GROUP BY [SiteId]
) [b] ON [a].[SiteId] = [b].[SiteId]
WHERE [a].[SiteId] = 1
到目前为止我正在使用的东西(不是编译...)
from u in db.Set<User>()
join s in db.Set<Site>() on u.SiteId equals s.SiteId
let x = t.ModLimit
where s.SiteId == 1
group u by u.SiteId into g
select new { g,x});
想法?
表格的缩减结构:
网站
SiteId int PK
ModLimit int
用户
UserId int PK
SiteId int FK IsMod 位
【问题讨论】:
-
当每个分组的站点 ID (g) 的 ModLimit (x) 可能不同时,您是否尝试将 g 和 x 选择到同一个对象中?
-
可能是它无法编译的原因之一。据我所知,lambda 没有“let”关键字。 stackoverflow.com/questions/9240375/…
-
不知道
ModLimit是哪里来的? -
@LadislavMrnka - 已编辑。 ModLimit 来自
[Site]表。 -
错误是:“无法解析符号'x'”
标签: c# linq entity-framework tsql linq-to-entities