Похоже, что ваше приложение было упаковано другим слоем аутентификации (Gem), не могли бы вы дважды проверить ваше приложение? если вы используете Devise
или Clearance
, вам следует снова взглянуть на свою вики-ссылку, чтобы правильно настроить ее (с помощью Devise или Clearance).
Вы можете использовать такой простой код, который игнорирует заголовок и не работает с кавычками, но может быть достаточным для ваших нужд.
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])
}
Или вы можете использовать библиотеку, как предлагали другие.
С библиотека 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());
}
}
}
Для конкретных данных, показанных в вашем вопросе...
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-файлах.
Для этого есть проект кода:
http://www.codeproject.com /KB/linq/LINQtoCSV.aspx
Однако вы можете посмотреть здесь: