C# 有两个datatable dt和datatable dtGN,dt里包含列recordid,orderid,sn,dtzz里包含InverterSN,TestResult,TestTime,组合两张表要求显示不重复的列SN,TestResult,TestTime,若出现相同SN 取时间最近的一次
时间: 2023-09-10 16:15:39 浏览: 202
DataTable 导出Excel
5星 · 资源好评率100%
可以使用 LINQ 进行两个 DataTable 的关联操作,并根据要求进行筛选,示例代码如下:
```csharp
// 获取 dt 和 dtGN 的关联数据
var query = from row1 in dt.AsEnumerable()
join row2 in dtGN.AsEnumerable()
on row1.Field<string>("sn") equals row2.Field<string>("InverterSN")
select new {
SN = row1.Field<string>("sn"),
TestResult = row2.Field<string>("TestResult"),
TestTime = row2.Field<DateTime>("TestTime")
};
// 按照 SN 分组,取 TestTime 最大值(即最近的时间)
var result = query.GroupBy(x => x.SN)
.Select(g => g.OrderByDescending(x => x.TestTime).FirstOrDefault())
.ToList();
```
其中,`query` 变量表示关联数据的集合,`result` 变量表示最终筛选后的结果,可以将其绑定到数据控件或进行其他处理。注意,在使用 LINQ 进行关联操作时,需要确保两个 DataTable 中的列类型和名称相同。
阅读全文