【问题标题】:Duplicates in data table should be skipped应跳过数据表中的重复项
【发布时间】:2013-01-13 08:27:56
【问题描述】:

下面是输入文本文件。我通过数据表访问它,如下面的代码所示。

输入文件有以下数据:

ABC
D
E
F
1234
2345
2345
BAC
A
B
C
2345
ABC
D
E
F
12345

我想得到以下输出:

ABC
D
E
F
1234
2345
2345
12345
BAC
A
B
C
2345

这是我试图通过数据表或数据集获取上述输出的代码。

class Program
{
    private string dirCSV = @"C:\Prod.txt";
    // load the file in the data in the data set
    public DataSet loadCVS()
    {
        DataSet ds = new DataSet();
        try
        {

            string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Text;", Path.GetDirectoryName(dirCSV));
            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();
            OleDbDataAdapter DA = new OleDbDataAdapter("SELECT * FROM Prod.txt", conn);
            DataTable DT = new DataTable();
            DA.Fill(DT);
            DT.DefaultView.Sort = "Item/Variant ASC";
            conn.Close();
        }     
        catch (Exception e){ /*Error*/}

        return ds;
    }
}

这里会用到:

static void Main(string[] args)
{
    Program obj = new Program();
    obj.loadCVS();
}

但是我在数据表中获得了数据,但我无法按照上述格式的输出对日期进行排序。

你能帮忙吗?有什么想法吗?

【问题讨论】:

  • 你能修正一下代码示例的格式吗?
  • 细化您的问题,您是在尝试消除重复、对数据进行排序还是尝试使用日期对数据集进行排序。
  • 你为什么要这么做?我的意思是,如果您需要从文件中读取内容,请使用 StreamReader

标签: c# datatable dataset


【解决方案1】:

为避免重复记录,只需在查询中使用Distinct 它将给出不同的记录...

SELECT Distinct FieldName from Prod.txt

如果您想删除 DATA TABLE 中的重复项,请尝试以下代码

conn.Open();
OleDbDataAdapter DA = new OleDbDataAdapter("SELECT * FROM Prod.txt", conn);
DataTable DT = new DataTable();
DA.Fill(DT);
DT.DefaultView.Sort = "Item/Variant ASC";
Hashtable tempTable = new Hashtable();
ArrayList duplicateList = new ArrayList();
foreach (DataRow drow in DT.Rows)
 {
  if (tempTable.Contains(drow[yourcolName]))
     duplicateList.Add(drow);
  else
     tempTable.Add(drow[colName], string.Empty); 
 }
//Removes the duplicates from Datatable...
foreach (DataRow dRow in duplicateList)
  DT.Rows.Remove(dRow);

ds.Tables.Add(DT);
conn.Close();

【讨论】:

  • 非常感谢Pandian ..您的代码运行良好,但是在所需的输出中是ABC DEF 1234 2345 2345 12345 BAC ABC 2345 当我运行您的代码时,输​​出显示如下所示ABC DEF 1234 2345 2345 BAC ABC 2345 12345 iwant 12345 这个数字低于 ABC 组。现在不会发生这种情况。你能帮帮我吗。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
相关资源
最近更新 更多