c# - 使用 C# 从数据表中删除重复项
问题描述
我在数据表中有这种格式的重复值
Sak Dte
1 12/31/2020
2 12/31/2020
3 04/01/2020
3 12/31/2020
我需要从数据表中删除具有 04/01/2020 值的 Sak 3。以下是我正在使用的代码,但它正在删除具有 2020 年 12 月 31 日值的 Sak 3 任何解决此问题的想法。注意:如果您发现类似的 sak 值,您需要删除过去的日期 (dte) 值并保留未来的日期 (dte) 值。例如:sak 3 有 04/01/2020 和 12/31/2020 我们需要删除 04/01/2020 并保留 12/31/2020 预期 O/P Sak Dte 1 12/31/2020 2 12/31/2020 3 12/31/2020
private DataTable RemoveDuplicateRows(DataTable table)
{
List<DataRow> rmList = new List<DataRow>();
Dictionary<long, long> dictionary = new Dictionary<long, long>();
foreach (DataRow row in table.Rows)
{
long sak = Convert.ToInt64(row["Sak"]);
if (dictionary.ContainsKey(sak) == false)
{
dictionary.Add(sak, sak);
}
else
{
rmList.Add(row);
}
}
foreach (DataRow row in rmList)
{
table.Rows.Remove(row);
}
//Datatable which contains unique records will be return as output.
return table;
}
解决方案
尝试这个 :
table = table.AsEnumerable()
.GroupBy(r => r["datetime"])
.Select(g => g.OrderByDescending(c => c["datetime"]).FirstOrDefault())
.CopyToDataTable();
我不知道您的日期时间列的名称。不确定它是否是 Dte,所以我只是在那里写了“日期时间”。
推荐阅读
- ios - Twilio 多重推送凭证 sid
- python - python子进程检查输出:如何获取整个消息
- entity-framework - MVC 5实体框架显示名称不允许输入十位数字,给出错误“值无效”?
- firebase - Unity3d 与 Firebase:无法启动协程
- reactjs - React 传单地图显示开放的街道地图传输层
- javascript - localstorage同步工作的问题
- ios - 如何在 Swift 5 中强制更新 CoreData 代码文件(属性扩展)?
- bootloader - 无法为 PIC24FJ128GC006 的链接描述文件定义 __BOOTLOADER
- javascript - jquery如何进行多个ajax调用
- powershell - 将子文件夹名称导出为路径,并为不同位置的每个父子文件夹创建一个 csv