vb.net - 使用 VB.Net 根据数据表中的行项删除重复行的最佳方法是什么?
问题描述
在阅读了互联网上的多个帖子后,我无法弄清楚如何做到这一点,我只想在下面就这个问题发表一个非常清楚的帖子。
如果我指向一篇有相同问题的文章对我有帮助,我将删除该帖子。
我在下面有一个示例数据表。我想删除重复的行,但仅在“请求类型”为“取消订单”且“订单号”相同的情况下。
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 或其他方法以更优雅的方式执行此操作。
解决方案
C#版本:
var result = orders.GroupBy(x => new { x.OrderNumber, x.RequestType})
.SelectMany(x => x.Key.RequestType=="Cancel Order" ? x.Take(1) : x.ToList());
推荐阅读
- javascript - 使用 jquery 自定义主题、正文等的 Mailto
- c# - .NET 网站 在 Web 服务器上发布网站 激活 Word 文档
- java - notifyDataSetChanged 不起作用。收到短信时的 ListView 未更新
- php - Smarty generate script tag with empty src
- angularjs - 将对象类型转换为 Angulars 类型
- firebase - 使用 Appsflyer 链接时,有什么方法可以在 Firebase 分析中获取广告来源?
- python - FutureWarning:不推荐使用`TemplateForHostMiddleware`。请升级到模板加载器
- google-chrome - 如何让 HTTP 请求在继续之前等待
- vhdl - 方向无关切片
- c++ - 如何在 C++ 中获取多行用户输入