-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 に答える