在LINQ中选择计数

SeT*_*ToY 5 .net c# linq count

我有一个带有列ResolvedDate和的SQL Server表ResolvedBy.

现在我想选择这两列并计算它们的结果,我认为我会这样实现:

_dataContext.Activities
    .Where(a => a.IsResolved && a.ResolvedBy == userId)
    .Select(a => new { a.ResolvedDate, ***COUNT*** });
Run Code Online (Sandbox Code Playgroud)

如您所见,Count-Part缺失.

我希望得到所有已在此ResolvedDate中完成的活动并计算它.

我该如何实现呢?

Ral*_*ton 18

from a in dataContext.Activities
where a.IsResolved && a.ResolvedBy == userId
group a by a.ResolvedDate into g
select new {ResolvedOn=g.Key, NumberResolved= g.Count()}
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 9

如果您尝试按日期计算每个项目,则需要使用GroupBy:

var countsByDate = _dateContext.Activities
                           .Where(a => a.IsResolved && a.ResolvedBy == userId)
                           .GroupBy(a => a.ResolvedDate)
                           .Select(g => new {ResolvedDate = g.Key, Count = g.Count() });
Run Code Online (Sandbox Code Playgroud)


Mar*_*zek 6

您必须通过ResolvedDate对数据进行分组,以获得每天解决的活动数量.

var dates = from a in dataContext.Activities
            where a.IsResolved && a.ResolvedBy == userId
            group a by a.ResolvedDate into g
            select new { Date = g.Key, Count = g.Count() }
Run Code Online (Sandbox Code Playgroud)

要按日分组(不分小时,分钟等),您可以更改组语句:

var dates = from a in dataContext.Activities
            where a.IsResolved && a.ResolvedBy == userId
            group a by a.ResolvedDate.Date into g
            select new { Date = g.Key, Count = g.Count() }
Run Code Online (Sandbox Code Playgroud)