-1

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

输入文件有以下数据:

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();
}

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

你能帮忙吗?有任何想法吗?

4

1 回答 1

0

为了避免重复记录,只需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();
于 2013-01-29T17:41:59.840 回答