以下是输入文本文件。我通过数据表访问它,如下面的代码所示。
输入文件包含以下数据:
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();
}
但是我得到了数据表中的数据,但我无法按上述格式输出中显示的日期。
你能帮忙吗?有什么想法吗?
答案 0 :(得分: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();