Сначала мы должны определить, что такое разделитель столбцов ;кажется, это либо табуляция или / и пробел :
var data = Directory
.EnumerateFiles(@"C:\Meteo", "*.dat")
.SelectMany(file => File.ReadLines(file))
.Select(line => line.Split(new char[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
.ToList();
Теперь пришло время pivot data
:
var result = Enumerable
.Range(0, data.Any() ? data[0].Length : 11)
.Select(column => data
.Select(line => line[column])
.ToArray())
.ToArray();
Итак, у вас будет массив 11
массивов (столбцов):
string demo = result[1][3]; // 1st column - (dates), 3d record
Однако я сомневаюсь, действительно ли вы хотите развернуть data
.Я предлагаю превратить каждую строку в класс , например
var result = Directory
.EnumerateFiles(@"C:\Meteo", "*.dat")
.SelectMany(file => File.ReadLines(file))
.Select(line => line.Split(new char[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
.Select(items => new {
id = items[0],
date = DateTime.ParseExact(items[1], "dd-MM-yyyy", CultureInfo.InvariantCulture),
/* etc. */
})
.ToList();
, тогда, когда вы захотите работать, скажем, с date
, вы можете иметь массив как
var dates = result
.Select(item => item.date)
.ToArray();
Редактировать: или, если вы хотите видеть элементы (скажем, date
и id
) в окне сообщения (см. Комментарий ниже), все, что вам нужно, это foreach
:
foreach (var item in result)) {
MessageBox.Show($"{item.date} and {item.id}");
}