如何删除两个数据表中的许多重复行

本文关键字:数据表 许多重 何删除 删除 两个 | 更新日期: 2023-09-27 18:34:54

I using C#.我有 2 个数据表dtUser, dtUserNotAllow.

我想检查dtUser中的所有行是否包含在数据表dtUserNotAllow中?如果有,请将其删除。

喜欢这个。

dtUser: user1 user2 user8

dtUserNotAllow: user2 .

这将删除用户 2。

=> dtUser: user1 user8

foreach(DataRow rows in dtUserNotAllow)
{
    if(dtUser.Columns.Contains(rows["user_name"].ToString()))
    {
    }
}

但显示错误如下:

foreach statement cannot operate on variables of type 'System.Data.DataTable' because 'System.Data.DataTable' does not contain a public definition for 'GetEnumerator'

如何删除两个数据表中的许多重复行

你必须替换

foreach(DataRow rows in dtUserNotAllow)

foreach (DataRow row in dtUserNotAllow.Rows)

若要删除无效行,代码应如下所示

List<String> lUserNotAllow = dtUserNotAllow.AsEnumerable().Select(x => (string)x["user_name"]).ToList();
foreach (DataRow row in dtUser.Rows)
{
    if(dtUserNotAllow.AsEnumerable().Any(x => row["user_name"]  == x["user_name"]))   
    {
        dtUser.Rows.Remove(row);
    }
}

循环访问DataTable的行