【问题标题】:how to use Linq count with group by in C#如何在 C# 中将 Linq 计数与 group by 一起使用
【发布时间】:2018-08-27 03:20:05
【问题描述】:

我有一个如下所示的数据表

基本上我希望它按列特征名(不同)分组,其中它应该努力总结并完成列
指定所有功能 ID,功能名称逗号分隔
功能 ID 的计数
分配给命令分隔
现在我希望数据表看起来像这样

不知道怎么用count 代码

var result5= dtTaskandBugs.AsEnumerable().GroupBy(x => x["Functional Area"])
                               .Select(item => new
                               {
                                   FunctionalArea = item.Key,

                                   Completedsum = item.Sum(y => Convert.ToDecimal(y["Completed"])),
                                   effortsum = item.Sum(z => Convert.ToDecimal(z["effort"])),
                                   storyids = string.Join(",", item.Select(a => a["Storyid"]).Distinct()),
                                   storiesename= string.Join(",", item.Select(b => b["StoryName"]).Distinct()),
                                   Featureid = string.Join(",", item.Select(c => c["Featureid"]).Distinct()),
                                   Featurename= string.Join(",", item.Select(d => d["FeatureName"]).Distinct()),

                               });

【问题讨论】:

标签: c# linq datatable


【解决方案1】:

使用Count(),您将获得分组值的计数。 像这样尝试Linq

from s in dtTaskandBugs.AsEnumerable()
                        group s by s.Field<string>("Functional Area")
                            into grp
                            orderby grp.Key
                            select new { 
                                   FunctionalArea = grp.Key,
                                   Completedsum = grp.Sum(y => Convert.ToDecimal(y["Completed"])),
                                   effortsum = grp.Sum(z => Convert.ToDecimal(z["effort"])),
                                   storyids = string.Join(",", grp.Select(a => a["Storyid"]).Distinct()),
                                   storiesename= string.Join(",", grp.Select(b => b["StoryName"]).Distinct()),
                                   Featureid = string.Join(",", grp.Select(c => c["Featureid"]).Distinct()),
                                   Featurename= string.Join(",", grp.Select(d => d["FeatureName"]).Distinct()),
                                   Count = grp.Count()          // <----------------
 };

【讨论】:

    【解决方案2】:

    只需写item.count(),您就会得到分组值的计数,

    【讨论】:

    • 我只需要 featureid 计数
    • 那么你应该使用我想要的功能总和而不是组数。 FeatureidCount = item.Sum(c =&gt; c["Featureid"])
    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2022-10-22
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多