如何使用linq获取表中值的计数

Posted

技术标签:

【中文标题】如何使用linq获取表中值的计数【英文标题】:How to get the count of values in table using linq 【发布时间】:2022-01-12 09:06:53 【问题描述】:

我需要对 db 进行查询以从我们网站中的 highchart 小部件获取数据这是我目前使用的代码,

var highChartsData = 
    (from a in db.roomdetails
    join b in db.ApplySchedule on a.RoomId equals b.RoomID
    where b.Status == true
    select new HighlinePie
    
        Title = a.RoomName,
        Date = b.MDate,
        Value = db.ApplySchedule.Where(x => x.RoomID == a.RoomId).GroupBy(x=>x.MDate).Count(),
).ToList();

这种方法的问题是现在得到总计数,但我需要的是基于日期的计数,例如,如果日期 12/09/20201 有两个条目,而 14/09/20201 有三个条目数据应为“标题,12/09/20201,2”,“标题,14/09/20201,3”。

【问题讨论】:

听起来您需要分组?试试这个:docs.microsoft.com/en-us/dotnet/csharp/linq/group-query-results这就是你想要的吗? 您需要在此日期字段上应用group by,然后在您感兴趣的每个返回组上使用Count 是的,就像您分享的内容,但我很困惑,如何将数据发送到模型,我应该使用列表吗? 【参考方案1】:

你必须使用分组:

var groupQuery = 
    from a in db.roomdetails
    join b in db.ApplySchedule on a.RoomId equals b.RoomID
    where b.Status == true
    group b by new  a.RoomName, b.MDate  into g
    select new HighlinePie
    
        Title = g.Key.RoomName,
        Date = g.Key.MDate,
        Value = g.Count()
    ;

var highChartsData = groupQuery.ToList();

【讨论】:

以上是关于如何使用linq获取表中值的计数的主要内容,如果未能解决你的问题,请参考以下文章

如何获取列中值的不同计数

使用 LINQ 获取连接表中的最大计数

如何使用 Linq 获取列中每个不同值的计数

在 Laravel 中获取数据库表中值的计数

如何使用LINQ返回多个自选字段

无法通过 Linq 查询获取多个表字段的计数