C# LINQ:通过获取对象及其计数进行分组
我的问题是:我每天(100+)都有很多数据,带有日期参数。我将在日历中使用它 我的问题是:C# LINQ:通过获取对象及其计数进行分组,c#,linq,C#,Linq,我的问题是:我每天(100+)都有很多数据,带有日期参数。我将在日历中使用它 我的问题是: var list = _cService.GetListAll(Id) .Where(x => x.StartDate.Date == model.Start.Date) .GroupBy(x => x.StartDate.Date) .ToList(); 这将返回此处所示
var list = _cService.GetListAll(Id)
.Where(x => x.StartDate.Date == model.Start.Date)
.GroupBy(x => x.StartDate.Date)
.ToList();
这将返回此处所示的数据,但这些日期也不明确。我们每天得到80+的奖励。值是该日期的计数:
这是意料之中的。但我需要这样的数据——有没有办法让它如图所示
您可以这样做:
var list = _cService.GetListAll(Id)
.Where(x => x.StartDate.Date == model.Start.Date)
.GroupBy(x => x.StartDate.Date)
.Select(x => new { Key = x.Key, Count = x.Count() })
.ToList();
然后以这种方式访问列表中的一项,例如:
DateTime key = list[0].Key;
int count = list[0].Count;
您没有发布任何EF核心或ASP.NET核心代码。如果
GetListAll()
返回一个List
,这是一个本地分组操作,听起来你只需要在GroupBy
之后用类似的东西投影你的输出。选择(g=>new{Date=g.Key,Count=g.Count()})
,但由于你没有给出足够的细节,所以无法确定,你哪儿也不算计数。如果要获取日期和计数,应使用.Select(grp=>new{date=grp.Key,count=grp.count()})代码>。所有EF核心GroupBy
示例都有一个Select
调用,该调用指定要返回的聚合,因此我必须在GroupBy之后进行选择。选择(grp=>new{Date=grp.Key,Count=grp.Count()});这个查询意味着我不理解我这样更改它,但现在它给出了错误{Date=grp.StartDate,Count=grp.StartDate.Count()},但问题是我无法获得countYes,如上所述,group by Date.Date然后选择带有Count的键可以正常工作。谢谢大家