gpt4 book ai didi

C# Linq Datatable 按日期时间月份分组

转载 作者:行者123 更新时间:2023-12-04 15:46:52 26 4
gpt4 key购买 nike

我有一个看起来像这样的数据表

enter image description here

图片中描述了我要实现的输出,我想在其中按日期时间的月份和我想的代理进行分组。这是我到目前为止所拥有的。

            DataTable dtTemp = new DataTable();
dtTemp.Columns.Add("Agent", typeof(string));
dtTemp.Columns.Add("Amount", typeof(decimal));
dtTemp.Columns.Add("Date", typeof(DateTime));

dtTemp = dtTemp.AsEnumerable()
.GroupBy(r => r[0])
.Select(g =>
{
var row = dt.NewRow();

row[0] = g.Key;
row[1] = g.Sum(r => (decimal)r[1]);

return row;
})
.CopyToDataTable();

有什么想法可以实现吗?

提前致谢!

最佳答案

通过分析您的帖子,您需要按 Agent 列对数据表行进行分组,并且只需要从 Date 列中的月份和年份进行分组。

您需要一个临时数据表dt,它可以保存结果数据表result中每一列的数据类型。

因此,CopyToDataTable() 会将您所有的dtTemp 组数据复制到具有临时dt 的新result 数据表> 列数据类型。

DataTable dt = new DataTable();
dt.Columns.Add("Agent", typeof(string));
dt.Columns.Add("Amount", typeof(decimal));
dt.Columns.Add("Date", typeof(string));


DataTable result = dtTemp.AsEnumerable()
.Select(x => new
{
Agent = x.Field<string>("Agent"),
Amount = x.Field<decimal>("Amount"),
Date = x.Field<DateTime>("Date").ToString("MM-yyyy")
})
.GroupBy(x => new { x.Agent, x.Date })
.Select(g =>
{
var r = dt.NewRow();

r["Agent"] = g.Key.Agent;
r["Amount"] = g.Sum(c => c.Amount);
r["Date"] = g.FirstOrDefault().Date;

return r;
})
.CopyToDataTable();

输出:

enter image description here

关于C# Linq Datatable 按日期时间月份分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com