weixin_42221975 2024-03-25 09:42 采纳率: 0%
浏览 19

Linq 提取DataTable分类汇总后的数据。

img


如图:GroupAndSummarize方法接收一个datatable,这个datatable里有"客户编号"、"客户名称"、"金额"、"开票总额"4个字段,然后在GroupAndSummarize方法中对这个datatable按“客户编号”进行分类汇总后,如何能在select new 里提取出“客户名称”这个字段的值?

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-25 09:42
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可以使用LINQ语句来对datatable进行分类汇总,并在select new语句中提取出“客户名称”这个字段的值。具体代码如下:
    public static void GroupAndSummarize(DataTable dataTable)
    {
        var result = from row in dataTable.AsEnumerable()
                     group row by row.Field<string>("客户编号") into g
                     select new
                     {
                         客户编号 = g.Key,
                         客户名称 = g.FirstOrDefault().Field<string>("客户名称"),
                         金额总和 = g.Sum(row => row.Field<decimal>("金额")),
                         开票总额 = g.Sum(row => row.Field<decimal>("开票总额"))
                     };
        foreach (var r in result)
        {
            Console.WriteLine(r.客户编号 + " " + r.客户名称 + " " + r.金额总和 + " " + r.开票总额);
        }
    }
    

    在select new语句中,使用g.FirstOrDefault().Field("客户名称")来提取出第一个数据行中的“客户名称”字段值。因为在这个datatable中,某一个客户编号会对应多个客户名称,但是这些客户名称是相同的,所以只需要提取出第一个数据行中的客户名称即可。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日