从c#中删除数据表中的重复行

时间:2014-03-29 12:56:57

标签: c# c#-4.0 datatable duplicate-removal

我有一个包含一些数据的数据表...... 数据如下所示。

____________________________________________________
|    |                    |            |           |
|mid |    usrnme          |   pname    |   prate   |
|---------------------------------------------------
|11  | demo1@gmail.com    |   sample1  |    2000   |
|14  | demo2@live.com     |   sample2  |    5000   |
|15  | demo3@yahoo.com    |   sample3  |    8000   |
|11  | demo1@gmail.com    |   sample1  |    2000   |
|18  | demo4@gmail.com    |   sample4  |    3000   |
====================================================

正如您所看到的,数据表中有两行具有相同的值。所以在我的代码中,我需要检查我的数据表中是否有任何重复的行。如果有任何重复的行,则删除该特定行,然后将下一行移动到已删除的行。在这种情况下,第1行和第4行是相同的,因此必须进行更正。因此必须删除第4行,并且必须在第4行位置插入第5行。这样,如果有n行,则必须像这样检查和修正n行。如何在c#.net中实现这一点。我是c#世界的新手。任何人的帮助都将对我有很大的帮助..在此先感谢。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

使用<Datatable>.DefaultView.ToTable(true)

例:dt.DefaultView.ToTable(true);

如果我们需要列特定的不同行,请使用

<Datatable>.DefaultView.ToTable(true,<Columns>)

例:dt.DefaultView.ToTable(true, "EmpId", "Name");

答案 2 :(得分:0)

您可以将数据视图用于此目的或Linq。

http://dotnetstep.blogspot.in/2013/11/dataview-totable-vs-linq-to-find.html(此链接可能对您有所帮助)

答案 3 :(得分:0)

这是在dataTabale中没有重复值的最简单方法。 Linq是实现这一目标的最佳方式。 请根据需要更改列的dataTable名称和数据类型。它应该与dataTable数据类型匹配。

  var avoidDuplicates= from row in ds.Tables["DataTableName"].AsEnumerable()
               group row by row.Field<string>("m_id") into rowGroup
               select new

               {  
                   m_id = rowGroup.Key,

     user_name = string.Join(" ", rowGroup.Select(row => row.Field<string>("usrnme")).Distinct().ToArray()),

     p_name = string.Join(" ", rowGroup.Select(row => row.Field<string>("pname")).Distinct().ToArray()),

                                        prate = string.Join(" ", rowGroup.Select(row => row.Field<decimal>("prate")).Distinct().ToArray()),
    }

我希望这会解决你的问题