ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#-Linq根据年份和类别选择产品计数

2019-11-22 10:05:49  阅读:264  来源: 互联网

标签:google-visualization linq c


我正在尝试绘制如下的Google条形图

我有一些东西

product
{
id,
name,
categoryid
}

category
{
id,
categoryname
}

我尝试了类似的代码

var grouped = (
  from c in allCategories
 from p in allProducts

 group p by new { year = p.CreateDate.Year} into d

 select new { year = d.Key.year, count = d.Count()}).OrderByDescending(g => g.year).Distinct();
<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Category Name', '2006', '2011', '2013'],

           @foreach (var p in grouped)
            {
                int productThisYear = grouped.Where(x => x.year <= p.year).Select(x => x.count).Sum();

                <text>
              ['',  @productThisYear,@productThisYear,@productThisYear]
                </text>
                if( counter++ != grouped.Count() - 1){
                    @Html.Raw(",")
                }
            }
        ]);

        var options = {
            title: 'Product Categories',
            hAxis: { title: '' }
        };

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
        chart.draw(data, options);
    }
    </script>

但是我无法根据此类别名称和年份获得类别名称和产品计数.任何机构都可以解释这个问题?
  在此先感谢您的帮助.

解决方法:

你可以这样使用join clause

var grouped = (
    from c in allCategories
    join p in allProducts on c.id equals p.categoryid
    group p by new {p.CreateDate.Year, c.categoryname} into g
    select new {categoryname=g.Key.categoryname, g.Key.Year, count=g.Count()})
   .OrderByDescending(g => g.year);

因此您可以在您的foreach中获得类别名称作为p.categoryname

标签:google-visualization,linq,c
来源: https://codeday.me/bug/20191122/2059088.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有