C#查询按列求和数据
本文关键字:求和 数据 查询 | 更新日期: 2023-09-27 18:01:08
我有一个包含DATE
列和POWER
列的数据视图。我从一个XML文件中填充这个数据视图,该文件是从一个特定的链接中获得的,我想用"DATE"对POWER
列组求和。我使用这个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
我希望得到你的答复。
问题不在于LINQ查询本身,而在于大括号的放置不正确。
显然,编译器决定return
语句就在类声明的内部。当然,不能从类中return
,只能从方法中return
。
我不能马上说出问题,因为你只发布了一段代码,但我注意到有两个关闭的}
,而不是只有一个匹配的foreach
——这可能是编译器思维方法结束的原因吗?
创建一个返回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;
}