【问题标题】:Merge two datatable in to one datatable and remove duplicate as per single column将两个数据表合并到一个数据表中,并按单列删除重复项
【发布时间】:2013-12-10 08:45:54
【问题描述】:

我有两个数据表,比如 T1 和 T2。以下是两个表中的列:

1) Filename,
2) Size,
3) PATH,
4) rank,
5) DocTitle,
6) HitCount

现在,我需要合并表 T1 和 T2,但条目不应按照“文件名”列重复。

我无法使用 T1.Merge(T2) 来完成我的工作。有没有人有同样的建议。谢谢。

【问题讨论】:

    标签: c# datatable


    【解决方案1】:

    如果你需要在 C# 中实现这一点,那么这样的东西可能对你有用

    var fileNames = t1.Rows.OfType<DataRow>().Select(row => row["FileName"]).ToList();
    var rowsToAdd = t2.Rows.OfType<DataRow>().Where(row => !fileNames.Contains(row["FileName"])).ToList();
    
    foreach (var dataRow in rowsToAdd)
    {
        t1.ImportRow(dataRow);
    }
    

    但最好使用 SQL 过滤器,然后放入 DataTable。

    【讨论】:

    • 我在使用索引服务时无法使用 SQL 过滤器。
    • 以下代码对我有用: foreach (DataRow r in T2.Rows) { DataRow[] dr= T1.Select("Filename='" + r["Filename"].ToString()+ "'"); if (dr.Count() == 0) { //dtContents.Rows.Add(r); T1.ImportRow(r); } }
    【解决方案2】:
    select * into table_name from (select * from T1  union select * from t2 )
    

    注意

    仅当两个表的列数相同时才有效

    【讨论】:

    • 它将有重复的行(按 FileName 列)
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 2018-04-10
    • 2017-06-05
    • 2015-11-29
    • 2010-11-22
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多