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

关注让阿豪来帮你解答,本回答参考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中,某一个客户编号会对应多个客户名称,但是这些客户名称是相同的,所以只需要提取出第一个数据行中的客户名称即可。