【发布时间】:2019-12-05 18:03:59
【问题描述】:
在阅读了互联网上的多篇帖子后,我无法弄清楚如何做到这一点,我只想在下面就这个问题做一个非常清楚的帖子。
如果有人指出我有相同问题对我有帮助的文章,我将删除该帖子。
我在下面有一个示例数据表。我想删除重复的行,但仅在“请求类型”为“取消订单”且“订单号”相同的情况下。
Report Date Time, Order Number, Request Type, Old Value, New Value
12/5/2019 12:00 , TM123456-01 , Cancel Order, 470000000, 5700000000
12/5/2019 12:00 , TM123456-01 , Cancel Order , 123000000, 4560000000
12/5/2019 12:00 , MT123456-02 , Add Order , 470000000, 5700000000
12/5/2019 12:00 , AP123456-02 , Add Order , 470000000, 5700000000
12/5/2019 12:00 , ST123456-02 , Remove Order , 470000000, 5700000000
因此,应该从上述数据表中删除的行应该是第 2 行,因为它与第 1 行的“订单号”相同,即“TM123456-01”,其请求类型为“取消订单”。
我想留下的结果是下面的数据表。
Report Date Time, Order Number, Request Type, Old Value, New Value
12/5/2019 12:00 , TM123456-01 , Cancel Order, 470000000, 5700000000
12/5/2019 12:00 , MT123456-02 , Add Order , 470000000, 5700000000
12/5/2019 12:00 , AP123456-02 , Add Order , 470000000, 5700000000
12/5/2019 12:00 , ST123456-02 , Remove Order , 470000000, 5700000000
我知道我可以使用嵌套的 For Each 循环来执行此操作,但我想了解如何使用 Microsoft LINQ 或其他方法以更优雅的方式执行此操作。
【问题讨论】:
-
为什么要删除第二行而不是第一行(我的意思是基于什么考虑)?
-
它可能是第一个,在我的情况下无关紧要。只是我最终得到了一组关于“订单号”和“请求类型”的不同行,其中请求类型为“取消订单”。
-
第二行的订单号与第一行相同,即“TM123456-01”,并且它的“请求类型”为“取消订单”,因此所有这些都与行相同1,我希望它从我们的数据表中删除。如果您注意到,旧值和新值是不同的。旧值和新值对数据表中的其他“请求类型”很重要,但对“取消订单”请求类型不重要。希望这是有道理的。
标签: vb.net linq filter datatable unique-values