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

时间:2011-03-27 12:50:06

标签: 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,
                           a.Month,
                         b.Fact_key
                         });
        var query2 = query.GroupBy(x =>  x.Month );
        Grid1.DataSource = query2;
        Grid1.DataBind();

因此,当我尝试使用查询进行绑定时,它可以正常工作,但是query2会产生错误

  

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

由于您按月分组,现在您只有月份字段作为键,以及分组项目的集合。如果您想在数据源上有更多字段,则需要在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()

希望这会有所帮助

答案 1 :(得分:0)

group by返回名称与原始select不同的列。

您可以执行以下操作以“用于教育目的”。

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