c# - 每小时/每天/每月获取唯一用户
问题描述
我对 LINQ 表达式很陌生,需要在 MVC 中创建一个图表。
饼图有标签部分:如果情况是小时,它将有 1,2...24 如果天然后 1,2...31 如果月然后 1,2...12
因此,对于每种情况,我都需要通过 UserID 获取唯一用户,因为我的表包含用户多次存在的对话数据。然后我必须返回相应的数组。现在我有:
ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => DateTime.Parse(p.Date_Time).Month).ToArray();
和图表代码:
var monthChart= @Html.Raw(Json.Encode(@ViewBag.monthArray));
var areaChartData = {
labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
datasets: [
{
label: 'Month Count',
fillColor: 'rgba(210, 214, 222, 1)',
strokeColor: 'rgba(210, 214, 222, 1)',
pointColor: 'rgba(210, 214, 222, 1)',
pointStrokeColor: '#c1c7d1',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(220,220,220,1)',
data: [monthChart]
}
]
}
如何计算每个案例的唯一用户数?如何区分每小时/每天/每月的计数?
解决方案
您可以通过传入这样的匿名对象来按多个字段分组
ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => new { DateTime.Parse(p.Date_Time).Month, p.UserID })
.ToArray();
如果您检查该结果,您可以看到您还能做什么。如果您只需要 JSON 月份和用户 ID,请在 ToArray 之前添加一个 .Select(g => new { g.Key.Month, g.Key.UserID })。
推荐阅读
- spring - 如何从 JHipster spring 控制器中检索存储库?
- laravel-backpack - 背包forlaravel - 控制器中的自定义函数,用于将数据从 Ajax 提交表单保存到数据库
- android - Android使用片段而不扩展类
- sql - 加速 PostgreSQL 查询(检查条目是否存在于另一个表中)
- django - 如何将上限存储到无限的 DecimalRangeField
- php - 如何根据多个公共键值对将列分组为逗号分隔的字符串?
- python - 按键排序嵌套的ansible字典
- bash - 使用 bash 和 curl 发送突发/多线程请求
- google-cloud-platform - 如何将谷歌云平台上的文件从一个存储桶压缩到另一个存储桶
- javascript - 从 Angular 中的 REST API 获取 HTTPS 时出错