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:非常感谢。所以这不是发布教程的地方。通过帮助他人或从更好的答案中学习,我在这里学到了很多。