C# 在datatable1表中,删除A列中,datatable2中B列有的值;结构不一致。
时间: 2024-09-25 12:17:35 浏览: 27
在C#中,如果你有两个DataTable对象`datatable1`和`datatable2`,它们的结构不完全匹配,比如`datatable1`有一个名为"A"的列,而`datatable2`有一个名为"B"的列,但这两个列的数据类型或者范围可能存在差异。如果你想从`datatable1`中删除那些在`datatable2`的"B"列中存在的值,你可以按照以下步骤操作:
1. 首先,你需要创建一个临时集合或者一个新的DataTable,用于存储`datatable1`中B列不在`datatable2`中出现的值。
```csharp
var excludeValues = datatable2.AsEnumerable()
.Select(row => row.Field<string>("B"))
.ToList(); //假设B列是字符串类型,如果不是,需要调整字段访问方式
// 或者使用HashSet如果不需要顺序
var excludeValuesSet = new HashSet<string>(excludeValues);
```
2. 然后遍历`datatable1`,检查"A"列的值是否在排除列表中,如果不在,则保留该行。
```csharp
DataTable filteredTable = new DataTable();
foreach (DataRow row in datatable1.Rows)
{
if (!excludeValuesSet.Contains(row.Field<string>("A"))) //假设"A"列也是字符串类型
{
filteredTable.ImportRow(row);
}
}
```
3. 最后,你可以将`filteredTable`赋值给`datatable1`,从而达到删除目标效果。
```csharp
datatable1 = filteredTable;
```
阅读全文