C# C LINQ查询按列对数据分组求和?

C# C LINQ查询按列对数据分组求和?,c#,linq,C#,Linq,我有一个包含日期列和电源列的数据视图。我从一个XML文件填充这个数据视图,该文件是从一个特定的链接获得的,我想按日期对电源列组求和。我使用此linq查询来获取它: var query = from row in _Hdt.AsEnumerable() group row by row.Field<int>("DATE") into grp orderby grp.Key select new { DATE

我有一个包含日期列和电源列的数据视图。我从一个XML文件填充这个数据视图,该文件是从一个特定的链接获得的,我想按日期对电源列组求和。我使用此linq查询来获取它:

var query = from row in _Hdt.AsEnumerable()
        group row by row.Field<int>("DATE") into grp
        orderby grp.Key
        select new
        {
        DATE = grp.Key,
        Sum = grp.Sum(r => r.Field<decimal>("KW"))
        };

        foreach (var grp in query)
        {
        Console.WriteLine("{0}\t{1}", grp.Id, grp.Sum);
        }
        }

我希望您的回复。

问题不在于LINQ查询本身,而在于大括号的放置不正确

显然,编译器决定返回语句就在类声明中。当然,不能从类返回,只能从方法返回


我不能马上告诉你这个问题,因为你只发布了一段代码,但是我注意到有两个}而不是一个匹配的foreach,这可能是编译器认为方法结束的原因吗?

创建一个返回IEnumerable的方法并将代码放入其中。不要直接在类中编写代码

编辑:


您需要将此查询放在方法中,而方法又必须放在类中。要么是这样,要么就是你在某个地方漏掉了很多括号。-1感谢你不费心在句子之间加点。请编辑您的问题。现在出现错误,指定的强制转换无效。并在错误row.FieldDATE var query=从_Hdt.aseneumerable group row by row.FieldDATE中的行按row.FieldDATE高亮显示到grp orderby grp.Key选择new{DATE=grp.Key,Sum=grp.Sumr=>r.FieldKW};查询{Console.WriteLine{0}\t{1},grp.DATE,grp.Sum;}@Syed中的foreach var grp:请创建一个新问题,这显然是一个不同的问题。在我的代码中,我将如何在将IEnumerable放入代码后返回它???@Syed Raza我用一个代码片段编辑了我的答案,并将您的代码放在一个方法中,该方法返回一个IEnumerable,即您的查询。
Error   1   Invalid token 'return' in class, struct, or interface member declaration    
Error   2   Invalid token ';' in class, struct, or interface member declaration 
Error   3   Expected class, delegate, enum, interface, or struct     
Error   4   Expected class, delegate, enum, interface, or struct     
Error   5   Expected class, delegate, enum, interface, or struct     
Error   6   Identifier expected C:\Documents and Settings\Administrator.MUSEWERX-
Error   7   Expected class, delegate, enum, interface, or struct     
Error   8   Expected class, delegate, enum, interface, or struct     
Error   9   A namespace does not directly contain members such as fields or methods 
Error   10  Type or namespace definition, or end-of-file expected   
public IEnumerable MethodAmk(){
          var query = from row in _Hdt.AsEnumerable()         
                      group row by row.Field<int>("DATE") into grp         
                      orderby grp.Key         
                      select new {         
                            DATE = grp.Key,         
                            Sum = grp.Sum(r => r.Field<decimal>("KW"))         
            };          
          foreach (var grp in query)         
                {         
                 Console.WriteLine("{0}\t{1}", grp.Id, grp.Sum);         
               } 
          return query;
}