CSV to object model mapping

Похоже, что ваше приложение было упаковано другим слоем аутентификации (Gem), не могли бы вы дважды проверить ваше приложение? если вы используете Devise или Clearance, вам следует снова взглянуть на свою вики-ссылку, чтобы правильно настроить ее (с помощью Devise или Clearance).

33
задан gonzobrains 27 December 2013 в 16:47
поделиться

4 ответа

Вы можете использовать такой простой код, который игнорирует заголовок и не работает с кавычками, но может быть достаточным для ваших нужд.

from line in File.ReadAllLines(fileName).Skip(1)
let columns = line.Split(',')
select new
{
  Plant = columns[0],
  Material = int.Parse(columns[1]),
  Density = float.Parse(columns[2]),
  StorageLocation = int.Parse(columns[3])
}

Или вы можете использовать библиотеку, как предлагали другие.

37
ответ дан 27 November 2019 в 17:44
поделиться

С библиотека Cinchoo ETL, может разобрать файл CSV в объекты

, Определяют тип, соответствующий структуре файла CSV как ниже

public class PlantType
{
    public string Plant { get; set; }
    public int Material { get; set; }
    public double Density { get; set; }
    public int StorageLocation { get; set; }
}

Груз файл CSV

static void LoadCSV()
{
    using (var p = new ChoCSVReader<PlantType>("*** YOUR CSV FILE PATH ***")
        .WithFirstLineHeader(true)
        )
    {
        foreach (var rec in p)
        {
            Console.WriteLine(rec.Dump());
        }
    }
}
0
ответ дан 27 November 2019 в 17:44
поделиться

Для конкретных данных, показанных в вашем вопросе...

var yourData = File.ReadAllLines("yourFile.csv")
                   .Skip(1)
                   .Select(x => x.Split(','))
                   .Select(x => new
                                {
                                    Plant = x[0],
                                    Material = x[1],
                                    Density = double.Parse(x[2]),
                                    StorageLocation = int.Parse(x[3])
                                });

Если у вас уже есть тип, объявленный для ваших данных, то вы можете использовать его, а не анонимный тип.

Обратите внимание, что этот код не является надежным вообще. Он не будет корректно обрабатывать значения, содержащие запятые/новые строки и т.д., значения строк в кавычках или любые другие эзотерические вещи, которые часто встречаются в CSV-файлах.

37
ответ дан 27 November 2019 в 17:44
поделиться

Для этого есть проект кода:

http://www.codeproject.com /KB/linq/LINQtoCSV.aspx

Однако вы можете посмотреть здесь:

Linq и streamreader получают строки

6
ответ дан 27 November 2019 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: