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

Posted

技术标签:

【中文标题】如何使用 Linq 获取列中每个不同值的计数【英文标题】:How to get the count of each distinct value in a column using Linq 【发布时间】:2021-11-14 08:12:15 【问题描述】:

我有一张如下图所示的表格

Db Table Example

我尝试的是返回不同的

var result = db.TaskTable.Select(item => item.Status).Distinct().Count();
string json = Newtonsoft.Json.JsonConvert.SerializeObject(result,Newtonsoft.Json.Formatting.Indented);
return Ok(json);

为我的 Web API 使用 Link 我想返回每个的不同计数。例如在 user_goup A 我想将其返回为:

“进行中:”“2” “已完成”:“1” “已停止”:“1”

【问题讨论】:

【参考方案1】:

从以下内容开始:

var q = from item db.TaskTable
        group by item.Status into byStatus
        select new Status = byStatus.Key, Count = byStatus.Distinct().Count() ;

然后根据结果手动构造 JSON。

【讨论】:

您可以使用fluent api .ToDictionary(i => i.Status, i => i.Count) 格式化来自IQuerable 的json 结果。不确定是否有 linq sql 格式。

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

如何获取列中每个值的计数?

获取bash中列中唯一值的计数

如何在不同的列中显示包含每个月值的汇总数据?

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

如何使用MySQL查询某个列中相同值的数量统计

如何列出各个列,其中每个列包含一个 id 计数,其中每列中的 id 不在 MySQL 中每列的不同表中