C# 尝试在LINQ中使用groupby时网格出现问题
尝试使用GROUPBY时,我收到一个错误消息,说在所选资源上找不到字段“date1”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,
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绑定为源时,查询工作得非常完美,然后我得到了错误