Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:通过获取对象及其计数进行分组_C#_Linq - Fatal编程技术网

C# LINQ:通过获取对象及其计数进行分组

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(); 这将返回此处所示

我的问题是:我每天(100+)都有很多数据,带有日期参数。我将在日历中使用它

我的问题是:

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的键可以正常工作。谢谢大家