C# 有两个datatable dt和datatable dtBZ, dt里包含列recordid,orderid,sn,dtLH里包含InverterSN,bzTestTime, 组合两张表要求显示不重复的列SN,bzTestTime ,若出现相同SN 取时间最近的一次
时间: 2023-09-11 15:05:54 浏览: 67
可以使用以下代码将两个DataTable组合并去重:
```csharp
//先将两个DataTable按照 SN 字段进行内连接
var result = from row1 in dt.AsEnumerable()
join row2 in dtBZ.AsEnumerable()
on row1.Field<string>("SN") equals row2.Field<string>("InverterSN")
select new
{
SN = row1.Field<string>("SN"),
BZTestTime = row2.Field<DateTime>("bzTestTime")
};
//再按照 SN 进行分组,取每组中 BZTestTime 最大的记录
var finalResult = from row in result
group row by row.SN into g
select new
{
SN = g.Key,
BZTestTime = g.Max(x => x.BZTestTime)
};
//将结果转换为 DataTable 格式
DataTable dtResult = new DataTable();
dtResult.Columns.Add("SN", typeof(string));
dtResult.Columns.Add("BZTestTime", typeof(DateTime));
foreach (var row in finalResult)
{
dtResult.Rows.Add(row.SN, row.BZTestTime);
}
```
注意:以上代码假设 SN 字段的数据类型为 string,BZTestTime 字段的数据类型为 DateTime。如果数据类型不同,需要适当修改代码。
阅读全文