У меня есть CSV-файл, такой как
Title|Column|Value
A|Z1|1
A|Z1|2
A|Z1|3
A|Z2|1
A|Z2|5
B|Z3|4
B|Z3|6
....
Я хочу прочитать этот CSV-файл в следующую иерархию классов: (Я хочу в итоге список MyClass
)
class MyClass
{
public string Title { get; set; }
public List<Column> Columns { get; set; }
}
class Column
{
public string Column { get; set; }
public List<Value> Values { get; set; }
}
class Value
{
public string Value { get; set; }
}
Я не могу понять, как этого достичь.До сих пор я пробовал:
class DTO
{
public string Title { get; set; }
public string Column { get; set; }
public string Value { get; set; }
}
List<DTO> records = new List<DTO>();
using (var reader = new StreamReader(model.Path))
using (var csv = new CsvReader(reader))
{
records = csv.GetRecords<DTO>().ToList();
}
var temp = records
.GroupBy(x => x.Title)
.Select(y => new
{
Title = y.Key,
Columns = y.SelectMany(x => new { x.Column, x.Value }) //I am not sure how to proceed from here
});
Проблема, с которой я сталкиваюсь, заключается в том, как я могу далее группировать по столбцам и получать значения, или если мне следует использовать другой подход?
Еще одно объяснение структуры csv: для каждого столбца может быть несколько значений, а для каждого заголовка может быть несколько столбцов.