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

发布于 2024-10-27 04:39:41 字数 622 浏览 0 评论 0原文

当尝试使用 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。

我该如何解决这个问题?

When trying to use GROUPBY I get an error saying a field 'date1' is not found on selected resource.

   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();

So, when I try to bind with query it works perfectly, but query2 yields the error

field date1 not found on selected datasource.

How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野侃 2024-11-03 04:39:41

分组依据返回名称与原始选择不同的列。

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

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

The group by returns columns with different names than the original select.

You can do the following to see it "for educational purpose".

create a new Grid2 and use it with automatic columnmapping. Bind Query2 to this Grid2 and you will see the result.

呆头 2024-11-03 04:39:41

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

希望这有帮助

Because you grouped by month, now you have only month field as a key, and collection of grouped items. If you want more fields on data source you need to use aggregate function on date1 field.

For example like this:

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()

hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文