C# 如何将标题分组并在select语句中添加where条件
请参考下面的数据表图像 标头包含两组值C# 如何将标题分组并在select语句中添加where条件,c#,linq,C#,Linq,请参考下面的数据表图像 标头包含两组值 难以使用/理解 交付问题 我想对标题进行分组并获得类别百分比,如下代码所示 var p = from linq_row in trend_data.AsEnumerable() group linq_row by linq_row["Header"] into g select new {
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 new语句内部执行插入where子句的操作
我需要根据标题值获取类别百分比。如果需要每个组百分比列的总和:
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 headerPercentages=trend_data.AsEnumerable()
.GroupBy(r=>r.Field(“头”))
.Select(g=>new{Header=g.Key,Percentage=g.Sum(r=>r.Field(“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"))
};
var x=new{
firstHeaderPercentage=trend_data.AsEnumerable()
.其中(r=>r.字段(“标题”)==“难以使用/理解”)
.Sum(r=>r.Field(“categoryPercentage”),
secondHeaderPercentage=trend_data.AsEnumerable()
.其中(r=>r.字段(“标题”)==“交付问题”)
.Sum(r=>r.Field(“categoryPercentage”))
};
如果所需结果只是一个包含两个属性的匿名类型,为什么要按标题分组?我不明白你为什么想要一个IEnumerable
。@Tim如果你想要特定标题的特定categorypercentage,这意味着我将迭代整个循环,并执行一些if条件。相反,如果两个变量持有该值,则表示易于访问。事实上,我并不期望百分比的总和。只是我需要得到类别百分比的数组only@SivaRajini:然后用选择
+排列
而不是求和
。你真了不起。你在林克教了我一些逻辑。如果可能的话,你能把基本的linq教程发布到这里吗learn@SivaRajini:非常感谢。所以这不是发布教程的地方。通过帮助他人或从更好的答案中学习,我在这里学到了很多。