我的数据视图包含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
我希望你的回复。
答案 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;
}