如何在null返回零值时使用数组以使用Linq在Chart JS上生成Chart

问题描述 投票:0回答:1

今天,我使用chartJS制作了一些图表。图表工作正常,但是有些遗漏。我有3个月的数据,一个月可能有一些数据为null(计数)。也许那是我的数据

Month Data1  |  Month Data2  |  Month Data3
1      2     |  1      0     |  1      2
2      4     |  2      2     |  2      2
3      1     |  3      1     |  3      0

edit

我桌子上的数据

Month Data1  Status  |  Month Data2  Status  |  Month Data3  status
1      2     all     |  1      0      1       |  1      2      2
2      4     all     |  2      2      1       |  2      2      2
3      1     all     |  3      1      1       |  3      0      2

我从该查询中分组所获得的月份

var SelectQuery = _Context.MyTable
                .Where(a => a.Date.Value.Year == DateTime.Now.Year)
                **.GroupBy(a => a.Date.Value.Month)**
                .Select(b => new
                {
                    Date = b.Key,
                    Count = b.Count() 
                });

结束编辑

我首先从db中选择日期,然后使用distinc将其设为月份第二步,我选择“数据”并使用过滤条件。这样的选择查询。

var SelectQuery = _Context.MyTable
                .Where(a => a.Date.Value.Year == DateTime.Now.Year)
                .GroupBy(a => a.Date.Value.Month)
                .Select(b => new
                {
                    Date = b.Key,
                    Count = b.Count() 
                });

并且要制作数组数据,我选择SelectQuery variabel并像这样计算该数据

var MyCountSelect = SelectQuery.Select(a => a.Count).ToArray();

然后我像这样使用JSON返回数据

return new JsonResult(new { myDate = date, myCount = MyCountSelect});

edit

我从该查询中获得的日期

var date = _Context.MyTable.Where(a=>a.Date.Value.Year == DateTime.Now.Year).Select(a => a.Date.Value.Month).Distinct().DefaultIfEmpty().ToList();

编辑结束

此外,我也有3个上述选择查询来创建数组。

并且当我看到json返回时,数据将像这样

Month  |  Data1  |  Data2  |  Data3
1      |   2     |   2     |   2
2      |   4     |   1     |   2
3      |   1     |         |

我的问题,如何使数组类似

Month  |  Data1  |  Data2  |  Data3
1      |   2     |   0     |   2
2      |   4     |   2     |   2
3      |   1     |   1     |   0

谢谢

arrays json asp.net-core chart.js
1个回答
0
投票

使月变化率第一

var months = Enumerable.Range(1, 12);

更改此代码

var SelectQuery = _Context.MyTable
                .Where(a => a.Date.Value.Year == DateTime.Now.Year)
                .GroupBy(a => a.Date.Value.Month)
                .Select(b => new
                {
                    Date = b.Key,
                    Count = b.Count() 
                });

输入此代码

 var SelectQuery = (from p in _Context.MyTable
            where p.Date.Value.Year == DateTime.Now.Year
                         group p by new { p.Date.Value.Month } into g
                         select new { g.Key.Month, Count = g.Count() }).ToArray();

并最终更改此代码

var MyCountSelect = SelectQuery.Select(a => a.Count).ToArray();

输入此代码

string[] MyCountSelect = (from month in months
                                from p in SelectQuery.Where(x => month == x.Month).DefaultIfEmpty()
                                select p == null ? "0" : p.Count.ToString()).ToArray();

并且结果为空时,数组可以给出0值

© www.soinside.com 2019 - 2024. All rights reserved.