LINQ to SQL分组和计数

时间:2012-01-30 17:11:26

标签: c# linq c#-4.0 grouping counting

我已经搜索了解决方案,但没有类似的。 我的问题是我想从数据库中选择数据,按UserID对其进行分组,并按状态ID

进行计数

用户

UserID
Name

约会

UserID
ClientID
Status
StartDate

状态可以是有效= 1,已取消= 2,已完成= 3

这就是我将如何显示结果。

Results table

提前致谢。

2 个答案:

答案 0 :(得分:1)

在您的问题中,您说您要对UserId进行分组,但在输出中显示Name。此查询将分组。您可能希望根据需要进行调整。

from u in tblUsers
join a in tblAppointments on u.UserID equals a.UserID
group a by new { u.UserID, u.Name } into g
select new
{
    Name     = g.Key.Name,
    Active   = g.Count (x => x.Status == 1),
    Canceled = g.Count (x => x.Status == 2),
    Done     = g.Count (x => x.Status == 3)
}

(如果两个用户具有相同的名称,这将处理这种情况)

答案 1 :(得分:0)