过滤DataTable的Rows的重复值

本文介绍了四种不同的方法来去除数据表中的重复记录,包括通过排序、选择性导入以及利用DataView特性实现数据去重等技术手段。这些方法适用于不同场景,并能够有效地提高数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

// 方法1
string sFormater = "{0}, {1}";
string sKeys = null;
string sPrevKeys = null;
// Key项目排序
DataRow[] rows = table.Select("""Key0, Key1");
foreach (DataRow row in rows)
{
sKeys 
= string.Format(sFormater, row["Key0"].ToString(), row["Key1"].ToString());
if (!sKeys.Equals(sPrevKeys))
{
tagetTable.ImportRow(row);
}

sPrevKeys 
= sKeys;
}


 
// 方法2
string sSelectFormater = "{0}, {1}";
foreach (DataRow row in table.Rows)
{
if (tagetTable.Select(string.Format(sSelectFormater, "Key0""Key1")).Length == 0)
{
tagetTable.ImportRow(row);
}

}


table 
= tagetTable;

// 方法3
string sFormater = "{0}, {1}";
DataRow row;
string sSelectFormater = "Key0 = {0}, Key1 = {1}";
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Select(string.Format(sSelectFormater, row["Key0"].ToString(), row["Key1"].ToString())).Length > 1)
{
table.Rows.Remove(row);
i
--;
}

}


// 方法3少一行
...
row 
= table.Rows[i];
...

// 方法4
DataView view = table.DefaultView;
DataTable tagetTable
= view.ToTable(true"column1""column2", ...);

方法4是最简单的方法,感觉很聪明的使用了dataview的toTable方法。

 

 

 

在VB.NET中,DataTable是一种用于存储表格数据的数据结构,如果你想要从两个列中去除重复值,并对其他列获取每个组的最大值,你可以按照以下步骤操作: 1. 首先,你需要创建一个临时的DataTable来存储处理后的结果。 2. 确定需要去重的两列,假设它们分别是Column1和Column2。你可以使用`Distinct()`方法来过滤出唯一的组合。 3. 对于剩余的列(假设是Column3),你可以遍历原始DataTable,并在新DataTable中为每一对唯一组合找出Column3的最大值。这通常涉及到一个GroupBy操作,然后对每个组应用Max函数。 示例代码如下: ```vb.net Dim sourceTable As New DataTable ' 假设这是你的源DataTable Dim uniqueTable As New DataTable() ' 去除重复,保留唯一组合 For Each row In sourceTable.AsEnumerable() Dim key = New With { .Column1 = row.Field(Of Type1)(0), .Column2 = row.Field(Of Type2)(1) } If Not uniqueTable.AsEnumerable().Any(Function(x) x.Field(Of KeyType).Equals(key)) Then uniqueTable.Rows.Add(key.Column1, key.Column2) End If Next ' 对每一对唯一组合,找到Column3的最大值 For Each groupRow In uniqueTable.AsEnumerable() Dim maxValue = sourceTable.AsEnumerable() .Where(Function(r) r.Field(Of KeyType)(0) = groupRow.Field(Of Type1)(0) AndAlso r.Field(Of KeyType)(1) = groupRow.Field(Of Type2)(1)) .Max(Function(r) r.Field(Of Column3Type)(2)) groupRow("Column3") = maxValue Next ``` 这里假设`KeyType`, `Type1`, `Type2`, 和 `Column3Type`是你表中的适当数据类型。完成后,`uniqueTable`将包含去重后的行,并在Column3列中拥有每个唯一组合的最大值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值