TextFile的DataTable?

我接管了另一个开发人员编写的应用程序,该应用程序从数据库中读取数据并将其导出。

开发人员使用DataTables和DataAdaptors。

所以,

_dataAdapter = new SqlDataAdapter("Select * From C....", myConnection); 

然后

 ExtractedData = new DataTable("CreditCards"); _dataAdapter.Fill(ExtractedData); 

然后传递ExtractedData以执行不同的function。

我现在被告知,除此之外,我需要从一些逗号分隔的文本文件中获取相同格式的数据。 应用程序执行相同的处理 – 它只是从两个来源获取数据。

所以,我想知道我是否可以将数据读入DataTable,如上所述,然后从CSV文件中添加更多记录。

这可能吗?

您可能需要使用此函数从文件中将数据读入DataTable

 public DataTable GetDataSourceFromFile(string fileName) { DataTable dt = new DataTable("CreditCards"); string[] columns = null; var lines = File.ReadAllLines(fileName); // assuming the first row contains the columns information if (lines.Count() > 0) { columns = lines[0].Split(new char[] { ',' }); foreach (var column in columns) dt.Columns.Add(column); } // reading rest of the data for (int i = 1; i < lines.Count(); i++) { DataRow dr = dt.NewRow(); string[] values = lines[i].Split(new char[] { ',' }); for (int j = 0; j < values.Count() && j < columns.Count(); j++) dr[j] = values[j]; dt.Rows.Add(dr); } return dt; } 

这绝对是可能的。
DataTable有一个NewRow方法,所以我能看到的最简单,powershell的方法是一次读取一行文本文件,解析字符串(split(“,”)然后填充行的字段。然后你需要添加DataTable的Rows集合的新行。
可能有更聪明的方法来实现这一点,但实现起来似乎相当简单(不了解您的架构)。

好的,试试这个:

 public string[] getColumns(bool ColumnNames) { try { StreamReader fileReader = new StreamReader(FileName); string line = fileReader.ReadLine; fileReader.Close(); string[] Columns = line.Split(","); if (ColumnNames) { return Columns; } int i = 1; int c = 0; string[] columnsNames = new string[Columns.Count]; foreach (string column in Columns) { columnsNames(c) = "column" + i; i += 1; c += 1; } return columnsNames; } catch (Exception ex) { //log to file } return null; } 

 public DataTable ReturnData(bool ColumnNames) { try { DataTable dt = new DataTable(); foreach ( columnName in getColumns(ColumnNames)) { dt.Columns.Add(columnName); } StreamReader fileReader = new StreamReader(FileName); if (ColumnNames) { fileReader.ReadLine(); } string line = fileReader.ReadLine; while ((line != null)) { line = line.Replace(Strings.Chr(34), ""); dt.Rows.Add(line.Split(",")); line = fileReader.ReadLine; } fileReader.Close(); return dt; } catch (Exception ex) { //log to file } return null; }