MVC4+ef6 Dictionary实现按年月分组,使用Echart生成饼状图
来源:互联网 发布:源码绑定域名绑定ip 编辑:程序博客网 时间:2024/05/16 18:20
1、ef方法
public Dictionary<string, string> GetTotalDataByYearAndMonth(int year)
{
// 先进行数据查询,返回数据
var query = _repAgent.AsQueryable();
//查询该年份的数据
if (year > 0)
{
query = query.Where(u => u.RegisterTime.Year== year);
}
//分组
var list = query.GroupBy(u => SqlFunctions.DateName("yyyy", u.RegisterTime) + SqlFunctions.DateName("MM", u.RegisterTime)).Select(g => (new { month = g.Key, count = g.Count() }));
if (list == null) return null;
Dictionary<string, string> dics = new Dictionary<string, string>();
foreach (var item in list)
{
var month_one = item.month.Substring(item.month.Length - 2, 2);
var month_two = item.month.Substring(item.month.Length - 1, 1);
if (month_one.Contains("0") && month_two != "0")
{
dics.Add("{name:'" + month_two + "月'", "value:" + item.count.ToString() + "},");
}
else
{
dics.Add("{name:'" + month_one + "月'", "value:" + item.count.ToString() + "},");
}
}
//补全没有的月份
for (var i = 1; i <= 12; i++)
{
string no_month = "{name:'" + i.ToString() + "月'";
if (!dics.Keys.Contains(no_month))
{
dics.Add(no_month, "value:0},");
}
}
Dictionary<string, string> dist = dics.OrderBy(o => Convert.ToInt32(o.Key.Replace("{name:'", "").Replace("月'", ""))).ToDictionary(o => o.Key, o => o.Value);
return dist;
}
2、控制器
[HttpGet]
public ActionResult Statistics(int year = 2017)
{
Dictionary<string, string> dist = _svcAgent.GetTotalDataByYearAndMonth(year);
ViewBag.dist = dist;
ViewBag.year = year;
return View();
}
3、页面
@{
ViewBag.Title = "数据统计";
this.SetSelectedMenuItem("dZGAgentStatis");
Layout = "~/Views/Shared/backoffice/_admin_layout_main.cshtml";
var yearList = new List<SelectListItem>();
int yearIndex = ViewBag.year ?? System.DateTime.Now.Year;
for (var i = 2016; i < 2030; i++)
{
var newitem = new SelectListItem();
newitem.Text = i.ToString();
newitem.Value = i.ToString();
newitem.Selected = newitem.Value == yearIndex.ToString();
yearList.Add(newitem);
}
var title_text = ViewBag.year + "某站点用户访问来源";
var symbol = ",";
}
@section SecHeader{
<script src="/Res/libs/Echarts/echarts.js" type="text/javascript"></script>
<script type="text/javascript">
var curUrl = '@Url.Action("Statistics")';
$(function () {
$("#syear").change(function () {
doSearch();
});
});
var doSearch = function () {
PopDialog.showTip('正在加载数据……');
var query = [];
adminUtility.pushTextValue(query, 'syear', 'year');
if (query.length > 0) {
curUrl += '?' + query.join('&');
}
delete query; query = null;
window.location = curUrl;
};
</script>
}
<div class="manaToolPanel clearfix">
<div class="panel clearfix" style="margin-top: 5px;">
<table cellpadding="2" cellspacing="0">
<tr>
<td>
年份:
</td>
<td>@Html.DropDownList("syear", yearList, new { @class = "input-select mr10" })
</td>
</tr>
</table>
</div>
</div>
<div id="main" style="width: 800px; height: 600px; margin: 50px auto;">
</div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
//var B_myChart = echarts.init(document.getElementById('B_main'));
myChart.showLoading();
option = {
title: {
text: '@title_text',
subtext: '纯属虚构',
x: 'center'
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: 'vertical',
left: 'left',
data: ['1月', '2月', '3月', '4月', '5月','6月', '7月', '8月', '9月', '10月','11月','12月']
},
color:['#6f0880', '#fc7113','#1ced16','#3405fe','#e675f6','#b6b6b6','#5ea5fc','#8c6e8f','#30252b','#19dce3','#dd3c97','#ce04ef'],
series: [
{
name: '访问数据',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [
@foreach(var item in ViewBag.dist)
{
@Html.Raw(item.Key) @symbol @Html.Raw(item.Value)
}
],
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
],
roseType: 'angle'
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
myChart.hideLoading();
</script>
- MVC4+ef6 Dictionary实现按年月分组,使用Echart生成饼状图
- 数据按年、月、星期进行分组
- 关于sql中的按年月日分组
- 根据时间按年、月、日、分组、排序
- MVC4使用EF6连接mysql数据库
- Oracle sql按年、月、周等,分组查询数据
- MySQL根据时间按年月日分组统计数据
- Mysql 根据时间戳按年月日分组统计
- Mysql 根据时间戳按年月日分组统计
- Mysql 根据时间戳按年月日分组统计
- Mysql 根据时间戳按年月日分组统计
- Mysql 根据时间戳按年月日分组统计
- 根据时间 或 时间戳 按年月日分组统计
- Mysql 根据时间戳按年月日分组统计
- SQL 按年,月,日对数据进行分组
- UNIX时间戳 按月分组 按年月分组 按日分组 mysql语句
- PostgreSQL 实现按月按年,按日统计 分组统计
- 生成静态HTML页面并分别按年月目录存放
- 存储过程语法
- linux常用命令
- 兼容核
- 数据结构与算法学习:冒泡排序
- 爬库脚本
- MVC4+ef6 Dictionary实现按年月分组,使用Echart生成饼状图
- linux程序调试(一)------内存分布
- caffe*** Aborted at 1457505270 (unix time) try "date -d @1457505270" if you are using GNU date ***
- mysql常用命令/语句学习一
- SHU金马五校赛 L.零件组装 【状压DP】
- Android 和jsp登录接口
- 栈:矩阵的压缩存储
- 算法复习:二叉树的镜像
- 问题解决:hive中的find_in_set不能用作join的条件