Вот проблема: потому что у вас есть это:
line = reader.ReadLine();
как последняя строка вашего цикла while
, она прочитает последнюю строку и затем отбросит ее, поскольку условие while
вернет false.
Я думаю, тебе нужно это:
try
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] data = BreakLine(line);
DataRow dr = _DataTable.NewRow();
// protect against overflow
int maxColumns = Math.Min(_DataTable.Columns.Count, data.Length);
for (int i = 0; i < maxColumns; i++)
{
dr[i] = data[i];
}
_DataTable.Rows.Add(dr);
}
return _DataTable;
}
finally
{
...
Таким образом, вы просто читаете каждую строку, как первое, что вы делаете каждый раз в цикле.