【发布时间】:2015-10-09 21:06:22
【问题描述】:
2 个表: 用户和警报
表:用户 用户 ID(整数), 全名(varchar)
表格:警报 分配给(int), 已解决(布尔)
查询:
SELECT u.Fullname, COUNT(resolved) as Assigned, SUM(CONVERT(int,Resolved)) as Resolved, COUNT(resolved) - SUM(CONVERT(int,Resolved)) as Unresolved
FROM Alarm i LEFT OUTER JOIN Users u on i.AssignedTo = u.UserID
GROUP BY u.Fullname
结果:
Fullname Assigned Resolved Unresolved
User1 204 4 200
User2 39 9 30
User3 235 200 35
User4 1 0 1
User5 469 69 400
对于我的生活,我无法弄清楚如何将它变成一个 Linq 查询。我在使用分组功能时遇到问题。 我看过无数的例子,没有一个例子有我的左外连接与分组的组合,或者它们太复杂了,我不知道如何让它与我的一起工作。这里的任何帮助将不胜感激!!!
更新: 我可能不清楚我在寻找什么。我正在寻找按用户 ID 的 AssignedTo 列分组的警报...除了,我想用位于 users 表中的 FullName 替换该用户 ID。有人发布并删除了一些接近的东西,除了它给了我用户表中的所有用户,这不是我想要的......
更新 2:在下面查看我的答案
【问题讨论】:
-
报警表有主键吗?
-
你知道你的 WHERE 子句把你的 LEFT JOIN 变成了一个 INNER JOIN
-
是的,它是“id”,但在 sql 查询中不需要,因为我们正在加入警报表中的 AssignedTo 字段和 User 表中的 UserId 字段。
-
这是另一个来自 MSDN 的 example。您是否得到错误的结果或错误消息?
-
哇!甚至没有意识到于尔根!但是,这确实给了我需要的结果。那么如何在 linq 查询中执行此操作? :)
标签: c# sql-server linq join linq-to-entities