我对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]
}
]
}
如何计算每种情况下的唯一身份用户? 如何区分每小时/每天/每月的计数?
答案 0 :(得分:0)
您可以通过传入这样的匿名对象来按多个字段分组
ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => new { DateTime.Parse(p.Date_Time).Month, p.UserID })
.ToArray();
如果检查该结果,则可以看到还可以做些什么。如果只需要对月份和用户ID进行JSON处理,则在ToArray之前添加.Select(g => new {g.Key.Month,g.Key.UserID})。