如何在两个数据表中删除多行重复?

时间:2016-02-17 09:46:40

标签: c#

我使用C#。我有2个数据表dtUser, dtUserNotAllow

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

喜欢这个。

dtUser: user1 user2 user8

dtUserNotAllow: user2

这将删除user2。

=> 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'

1 个答案:

答案 0 :(得分:0)

你必须替换

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

的行