C# 尝试在LINQ中使用groupby时网格出现问题

C# 尝试在LINQ中使用groupby时网格出现问题,c#,asp.net,linq,C#,Asp.net,Linq,尝试使用GROUPBY时,我收到一个错误消息,说在所选资源上找不到字段“date1” var query = (from a in db.Dates from b in db.Facts where a.Count_Key == b.Date_key select new{ a.Date1,

尝试使用GROUPBY时,我收到一个错误消息,说在所选资源上找不到字段“date1”

   var query = (from a in db.Dates
                     from b in db.Facts

                     where a.Count_Key == b.Date_key

                         select new{
                             a.Date1,
                           a.Month,
                         b.Fact_key
                         });
        var query2 = query.GroupBy(x =>  x.Month );
        Grid1.DataSource = query2;
        Grid1.DataBind();
因此,当我尝试使用query绑定时,它可以完美地工作,但query2会产生错误

在所选数据源上找不到字段date1


如何修复此问题?

因为您按月份分组,现在您只有月份字段作为键,以及分组项目的集合。若你们想在数据源上有更多的字段,你们需要在date1字段上使用聚合函数

例如:

var query2 = (from q in query
             group q by q.Month into g
             select new 
                       {
                          Month = g.Key,
                          Date = g.Select(gg=>gg.Date1).Max //or you can use first here etc.
                       }).ToList()

希望这有助于group by返回与原始select不同名称的列

您可以执行以下操作以“出于教育目的”查看它


创建一个新的Grid2并将其与自动列映射一起使用。将Query2绑定到此Grid2,您将看到结果。

找不到date1的,因为您是按月分组的,请尝试按两个字段进行分组。它仍然返回相同的错误嘿,即使在宣布query2之前,您如何访问它。DataSource=query2给出该错误?在这种情况下,网格仍然具有列定义。您应该使用空的默认网格执行此操作,它不能给出相同的错误。“id为'Grid2'的GridView数据源没有任何用于生成列的属性或属性。请确保您的数据源具有内容。”我说的是autogenerate columns=“True”错误是否更严重?调试时,是您的查询吗(不是query2)引用中包含数据?我觉得您的第一个查询不正确它包含数据…当我将它与query2绑定为源时,查询工作得非常完美,然后我得到了错误