C# 不工作的LINQ组

C# 不工作的LINQ组,c#,mysql,linq,C#,Mysql,Linq,我在这个论坛上读到了很多群发回复,但我还是要问: var errandQuery = (from t in db.TimereportSet group t by new { t.Errand.Name, t.Date } into g select new ErrandTime { Date = g.Key.Date, Value = g.Sum(e => e.Hours) }).ToList(); 为什么这不

我在这个论坛上读到了很多群发回复,但我还是要问:

var errandQuery = (from t in db.TimereportSet
                   group t by new { t.Errand.Name, t.Date } into g
                   select new ErrandTime { Date = g.Key.Date, Value = g.Sum(e => e.Hours) }).ToList();
为什么这不起作用。我得到以下异常:“字段列表”中的未知列“GroupBy1.K1”


例外情况来自mySQLClient。

您没有选择g中的小时数,因此它们不在那里求和

我不知道您的数据是什么样子,但请尝试以下方法:

编辑:

对不起,我的第一个回答不正确


您的LINQ查询是正确的,除了在使用e.的末尾。。您需要引用所选项目的位置。。。因此,您需要在lambda表达式中使用t,而不是e

我写这篇文章是作为一条评论,但它应该是一个答案,这是mySQL和LinQ中确认的错误。是否有其他方法可以使用变通方法、objectquery或direct sql或其他使用实体框架的方法查询相同的内容:

var errandQuery = (from t in db.TimereportSet
                   group t by new { t.Errand.Name, t.Date } into g
                   select new ErrandTime {
                       Date = g.Key.Date,
                       Value = g.Sum(e => e.Hours)}).ToList();

或者我应该为这个问题创建一个新帖子吗?

生成的SQL查询是什么?添加一行db.Log=Console.Out;将查询记录到Visual Studio中的输出窗口。这可能是提供程序mySQLClient错误。我的上下文没有.log成员?我这样做了:Console.WriteLineSystem.Data.Objects.ObjectQueryRandQuery.ToTraceString;从中选择1作为C1,从中选择GroupBy1.K1作为日期,从中选择GroupBy1.A1作为C2从时间报告中选择SumExtent1.Hours作为A1从时间报告中选择Set作为Extent1内部连接差事集作为Extent1.Errand上的Extent2.Id按Extent1.Date分组,Extent2.Name AS groupby1如果要对每个组的小时数进行汇总,则不能对小时数进行分组。假设TimereportSet的类型为IQueryable。那么g将是igrouping类型,我认为这是linqtomysql中的一个bug,是否有其他方法可以查询相同的内容?
var errandQuery = (from t in db.TimereportSet
                   group t by new { t.Errand.Name, t.Date } into g
                   select new ErrandTime {
                       Date = g.Key.Date,
                       Value = g.Sum(e => e.Hours)}).ToList();