集团及;使用LINQ聚合多个列

集团及;使用LINQ聚合多个列,linq,Linq,我在尝试使用LINQ和C#对csv文件中的行进行分组和计算时遇到了麻烦 (示例csv) SQL等价物 SELECT Col3 ,Col5 ,Col6 ,SUM(Col7) as [hours] ,AVG(Col10) as [pay] ,Col12 FROM mytable GROUP BY Col3, Col5, Col6, Col12 ORDER BY Col3, Col5, Col6,

我在尝试使用LINQ和C#对csv文件中的行进行分组和计算时遇到了麻烦

(示例csv)

SQL等价物

SELECT Col3  
      ,Col5
      ,Col6
      ,SUM(Col7) as [hours]     
      ,AVG(Col10) as [pay]    
      ,Col12     
  FROM mytable
  GROUP BY Col3, Col5, Col6, Col12
  ORDER BY Col3, Col5, Col6, Col12
我曾经尝试过使用其他线程来解决这个问题,但我在多列分组和计算方面遇到了困难。任何建议都将不胜感激。

试试这个

var query = (from t in mytable
             orderby t.Col3, t.Col5, t.Col6, t.Col12
             group t by new {t.Col3, t.Col5, t.Col6, t.Col12} into grp
             select new
                {
                    grp.Key.Col3,
                    grp.Key.Col5,
                    grp.Key.Col6,
                    hours = grp.Sum(t => t.Col7),
                    pay = grp.Average(t => t.Col10),
                    grp.Key.Col12,
                }).ToList();


显示您当前的LINQ代码。您如何读取CSV文件?
var query = (from t in mytable
             orderby t.Col3, t.Col5, t.Col6, t.Col12
             group t by new {t.Col3, t.Col5, t.Col6, t.Col12} into grp
             select new
                {
                    grp.Key.Col3,
                    grp.Key.Col5,
                    grp.Key.Col6,
                    hours = grp.Sum(t => t.Col7),
                    pay = grp.Average(t => t.Col10),
                    grp.Key.Col12,
                }).ToList();
   var query = mytable.GroupBy(t => new {t.Col3, t.Col5, t.Col6, t.Col12})
               .Select(grp => new
               {
                   grp.Key.Col3,
                   grp.Key.Col5,
                   grp.Key.Col6,
                   hours = grp.Sum(t => t.Col7),
                   pay = grp.Average(t => t.Col10),
                   grp.Key.Col12,
               })
               .OrderBy(t => new { t.Col3, t.Col5, t.Col6, t.Col12 }).ToList();