0

我正在使用此查询来过滤一些带有groupby“客户端”+总金额的数据并填充数据网格。select我在关键字中遇到错误。任何想法如何解决这一问题?

这是我正在使用的代码:

IEnumerable<DataRow> query = from p in data.AsEnumerable()           
         where (p.Field<string>("BS") == txtFilterbyBC.Text 
                && p.Field<string>("YEAR") == txtYear.Text
                && p.Field<string>("RM") == txtRM.Text)
                group p by p.Field<string>("Client") into g
                select new
                {
                   Name = g.Key,
                   Total = g.Sum(x => Convert.ToDouble(x.Field<double>("AMOUNT")))
                };

System.Data.DataTable boundTable = query.CopyToDataTable<DataRow>();
dataGridView1.DataSource = boundTable;

错误是:

无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(您是否缺少演员表?

4

1 回答 1

0

您使用的CopyToDataTable方法旨在获取一系列数据行并将其转换为数据表。如果序列中的项目还不是类型DataRow(或更派生的类型),那么它将不起作用,这里就是这种情况。

虽然有一些方法可以将该数据转换为数据表,但也没有必要。只需将DataGridView直接绑定到您的查询。无需将其全部包装在 DataTable 中。这样做只是不必要的努力。

如果您确实需要一个DataTable(但同样,您似乎不需要),那么您可以使用 [this other method](无法将类型 'System.Collections.Generic.IEnumerable' 隐式转换为 'System.Collections.Generic .IEnumerable'。存在显式转换(您是否缺少强制转换?)以将数据从非数据行源复制到DataTable.

于 2013-09-06T16:39:24.817 回答