Не читать пустые или нулевые записи в виде данных из текстового файла - C#
У меня есть function
который читает все tab delimited
записи из текстового файла в datatble
, но у меня есть много пустых или нулевых столбцов, которые tab delimited
, Я просто хочу прочитать все записи, где столбец 3 не является нулевым или не пустым. как мне это сделать? Вот мой простой метод
public DataTable ConvertTextToDataTable(string filePath, int numberOfColumns)
{
DataTable tbl = new DataTable();
for (int col = 0; col < numberOfColumns; col++)
tbl.Columns.Add(new DataColumn("Column" + (col + 1).ToString()));
string[] lines = System.IO.File.ReadAllLines(filePath);
int i = 0;
foreach (string line in lines)
{
var cols = line.Split('\t');
DataRow dr = tbl.NewRow();
for (int cIndex = 0; cIndex < numberOfColumns; cIndex++)
{
dr[cIndex] = cols[cIndex];
}
tbl.Rows.Add(dr);
i++;
}
return tbl;
}
1 ответ
Решение
Простейшим было бы вставить чек для IsNullOrWhiteSpace
для столбца 3 перед созданием и добавлением значений в таблицу данных, например:
public DataTable ConvertTextToDataTable(string filePath, int numberOfColumns)
{
DataTable tbl = new DataTable();
for (int col = 0; col < numberOfColumns; col++)
tbl.Columns.Add(new DataColumn("Column" + (col + 1).ToString()));
var lines = System.IO.File.ReadLines(filePath);
int i = 0;
foreach (string line in lines)
{
var cols = line.Split('\t');
if (cols.Length > 3 && String.IsNullOrWhiteSpace(cols[3]))
{
continue; //Ignore this line
}
DataRow dr = tbl.NewRow();
for (int cIndex = 0; cIndex < numberOfColumns; cIndex++)
{
dr[cIndex] = cols[cIndex];
}
tbl.Rows.Add(dr);
i++;
}
return tbl;
}
Также обратите внимание на использование var lines = System.IO.File.ReadLines(filePath);
вместо File.ReadAllLines
, поскольку он будет оценивать файл построчно, а не загружать все содержимое файла в память.