C# C LINQ查询按列对数据分组求和?
我有一个包含日期列和电源列的数据视图。我从一个XML文件填充这个数据视图,该文件是从一个特定的链接获得的,我想按日期对电源列组求和。我使用此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
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;
}