【发布时间】:2016-02-02 10:47:18
【问题描述】:
我需要从数据库中获取一些统计信息,但我无法让它按我的意愿工作。我有两个表,Task 和 Status,我需要获取每个 Status 的 Tasks 数量,例如,如果我有 New 和 Closed 状态,并且每个 Task 恰好有一个 Status,我想要一个这样的列表:
New 35
Closed 47
这是我目前所拥有的:
var statistics = database.Task
.GroupBy(t => t.StatusId)
.Select(g => new { Status = g.Key, Count = g.Count() }).ToList();
这会返回 StatusId 和 Task 计数,所以我需要做的就是将 StatusId 替换为 Status.Name。基本上我需要将上述内容与加入表状态相结合,然后获取状态.名称。但是在这里我失败了,有人可以帮助我吗?
【问题讨论】:
-
如果您正确地为实体建模以具有导航属性,则不必加入。你能展示你的实体类吗?
-
您在状态表上没有 FK 吗?如果你这样做了,EF 应该生成代理子类作为任务的一部分 - 然后你会在 linq 查询中找到
t.Status.Name -
我有外键,通常我会做 t.Status.Name 但在 Select() 我猜我无法访问 t。无论如何它都不起作用。
-
如果你的桌子上有
StatusName,那么你为你的问题做了什么努力,那就是用StatusName@Hultan替换StatusId -
@Viplock 我的表中没有 StatusName,我必须进行一些调整,见下文...
标签: c# join group-by entity-framework-6