在C#中删除MS Access数据库文件中的重复行

时间:2011-11-08 06:24:57

标签: c# winforms ms-access

我想要一种简单的方法来删除MS Access数据库文件中的重复行。

示例:

[realtimedata]
 SecName | SecSym | Number
---------+--------+--------
 Mike    | 123    | 245
 Mike    | 123    | 245

1 个答案:

答案 0 :(得分:0)

1)打开DataTable或Recordset,选择表的唯一标识符列以及用于标识重复行的列; select语句必须包含对副本标识列进行排序的order by子句。在您的示例中:ORDER BY SecName, SecSym, Number

2)遍历记录,读取标识重复行的列的值。

3)如果有任何重复的行,它们将彼此相邻,因为结果已按这些列排序。因此,如果任何行具有与前一行相同的值,则它是重复的,应该删除。

伪代码段:

string prevSecName = null;
int prevSecSym = 0;
int prevNumber = 0;

const int idIndex = 0;
const int nameIndex = 1;
const int symIndex = 2;
const int numberIndex = 3;

var idsToDelete = new List<SomeType>();

foreach (var row in rows)
{
    if (prevSecName != null && prevSecName = row[nameIndex] && prevSecSym = row[symIndex] && prevNumber = row[numberIndex])
        idsToDelete.Add(row[idIndex]);
    prevSecName = row[nameIndex];
    prevSecSym = row[symIndex];
    prevNumber = row[numberIndex];
}