【问题标题】:Group By like SQL for Datagridview像 Datagridview 的 SQL 一样分组
【发布时间】:2019-10-25 08:59:10
【问题描述】:

这个问题之前可能已经被问过并得到了回答,但我似乎无法在这里找到它。

我有一个 6 列的 datagridview:

Name Description Price Date Amount TotalPrice

我希望第二个 datagridview 以此为基础。 TotalPrice 和 Date 列应该被删除,Amount 应该被视为 SUM(),就像 SQL 中一样,其他列应该被分组。 当原始数据被过滤或刷新时,第二个数据网格视图也应该改变。

有人知道解决方案或已回答此问题的帖子吗?

尝试用 LINQ 做一些事情:

new_Datatable= old_Datatable.AsEnumerable()
             .GroupBy(r => r.Field<string>("Name"))
             .Select(g =>
             {
                 var row = old_Datatable.NewRow();

                 row["Artikel"] = g.Key;
                 row["Aantal"] = g.Sum(r => r.Field<decimal>("Amount"));

                 return row;
             }).CopyToDataTable();

但我似乎无法按正确的语法按多个字段分组并删除未使用的列(当然可以在事后删除它们,但如果可以事先完成,这样做会更合乎逻辑。)

【问题讨论】:

  • 网格中有数据源吗?
  • 是的,一个数据表。

标签: c# winforms linq datagridview


【解决方案1】:

检查是否有效

new_Datatable= old_Datatable.AsEnumerable()
             .Select(c => c.Name, c.Description, c.Amount, c.TotalPrice)
             .GroupBy(r => r.Field<string>("Name"), r.Field<string>("Description"), r.Field<string>("TotalPrice"))
             .Select(g =>
             {
                 var row = old_Datatable.NewRow();

                 row["Artikel"] = g.Key;
                 row["Aantal"] = g.Sum(r => r.Field<decimal>("Amount"));

                 return row;
             }).CopyToDataTable();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 2021-12-13
    • 1970-01-01
    • 2012-01-10
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多