请参考下面的数据表图像
标题包含两组值
我想对标题进行分组并获取类别百分比,如下面的代码
var p = from linq_row in trend_data.AsEnumerable()
group linq_row by linq_row["Header"] into g
select new
{
categorypercentage = g.Select(s => s["categoryPercentage"].ToString()).ToArray()
};
以上linq将对标题进行分组并返回标题
的categorypercentage但我想要的是我需要两组变量而不是一个单一变量
var p= from.....
select new
{
firstgroupedheadercategorypercentage= g.select ....and some where clasue
secondgroupedheadercategorypercentage= g.select ....and some where clasue
}
如何在select新语句内部执行或执行插入where子句的操作。
我需要根据标题值获取类别百分比。
答案 0 :(得分:2)
如果您想要每组的百分比列的总和:
var headerPercentages = trend_data.AsEnumerable()
.GroupBy(r => r.Field<string>("Header"))
.Select(g => new { Header = g.Key, Percentage = g.Sum(r => r.Field<double>("categoryPercentage"))});
如果您希望单个匿名类型实例作为结果,并且具有这些特定标头的两个属性:
var x = new {
firstHeaderPercentage = trend_data.AsEnumerable()
.Where(r => r.Field<string>("Header") == "Difficult to use/Understand")
.Sum(r => r.Field<double>("categoryPercentage")),
secondHeaderPercentage = trend_data.AsEnumerable()
.Where(r => r.Field<string>("Header") == "Delivery Issues")
.Sum(r => r.Field<double>("categoryPercentage"))
};