C#LINQ查询按列汇总数据组?

时间:2011-07-04 06:58:09

标签: c# linq

我的数据视图包含DATE列和POWER列。我从XML文件填充此数据视图,我从特定链接获取该文件,并且我希望将POWER列组加“DATE”。我使用这个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);
        }
        }

但我收到了错误:

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   

我希望你的回复。

2 个答案:

答案 0 :(得分:0)

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

显然,编译器决定你的return语句正好在类声明中。当然,你不能从一个班级return,你只能从一个方法return

我无法立即告诉您问题,因为您只发布了一段代码,但我注意到有两个结束}而不是只有一个匹配foreach - 这可能是原因编译思想方法结束了吗?

答案 1 :(得分:0)

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

编辑:

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;
}
相关问题