C# 有两个datatable dt和datatable dtzz,dt里包含列recordid,orderid,sn,dtzz里包含ProductSN,CreationDate,组合两张表要求显示不重复的列SN,CreationDate若出现相同SN 取时间最近的一次
时间: 2024-02-24 18:54:48 浏览: 83
您好!可以使用LINQ进行表的连接和筛选,代码如下:
```C#
var result = from row1 in dt.AsEnumerable()
join row2 in dtzz.AsEnumerable() on row1.Field<string>("sn") equals row2.Field<string>("ProductSN")
group row2 by row1.Field<string>("sn") into g
select new
{
SN = g.Key,
CreationDate = g.OrderByDescending(x => x.Field<DateTime>("CreationDate")).FirstOrDefault().Field<DateTime>("CreationDate")
};
```
这段代码会将两个表按照SN列连接,然后按照CreationDate降序排序,取每个SN最新的一条记录,最终生成一个新的匿名类型列表,包含SN和CreationDate两列。
相关问题
C# 有两个datatable dt和datatable dtzz,dt里包含列recordid,orderid,sn,dtzz里包含ProductSN,CreationDate,组合两张表要求显示不重复的列SN,CreationDate
好的,你可以使用C#中的LINQ语句来将两个datatable dt和datatable dtzz组合起来,并且只显示不重复的列SN和CreationDate。具体实现代码如下:
```
var result = (from row1 in dt.AsEnumerable()
join row2 in dtzz.AsEnumerable()
on row1.Field<string>("sn") equals row2.Field<string>("ProductSN")
select new
{
SN = row1.Field<string>("sn"),
CreationDate = row2.Field<DateTime>("CreationDate")
}).Distinct().ToList();
```
这里使用了LINQ语句中的join操作符将两个datatable连接起来,on子句指定了连接条件,即dt表的sn列与dtzz表的ProductSN列相等。然后使用select操作符将查询结果投影为一个新的匿名类型,包含SN和CreationDate列。最后使用Distinct方法去除重复的数据,并将结果转换为List类型。
有两个datatable dt和datatable dtzz,dt里包含列recordid,orderid,sn,dtzz里包含ProductSN,CreationDate,组合两张表要求显示不重复的列SN,CreationDate
可以使用SQL语句中的JOIN操作将两个datatable dt和datatable dtzz组合起来,并且只显示不重复的列SN和CreationDate。具体实现代码如下:
```
SELECT DISTINCT dt.sn, dtzz.CreationDate
FROM dt
JOIN dtzz ON dt.sn = dtzz.ProductSN;
```
这里使用了SELECT DISTINCT语句来去除重复的数据,JOIN语句来将两张表连接在一起,ON子句指定了连接条件,即dt表的sn列与dtzz表的ProductSN列相等。最终查询结果只包含不重复的SN和CreationDate列。
阅读全文