:: поклоны в palmsey и Jon Galloway::
я соглашаюсь с фактором пригодности для обслуживания. Это действительно берет меня немного дольше для получения моих начальных сделанных разметок (так как я - все еще ученик джедая в искусствах CSS), но выполнение полной модернизации веб-сайта на 15 страниц только путем обновления 1 файла является небесами.
CsvReader довольно хороший ... это не Microsoft, но он работает очень хорошо и является намного быстрее, чем некоторые из альтернатив (устаревший OleDb и т. д.).
Одна из причин, по которой многие люди пишут свои собственные, заключается в том, что CSV не так прост . Например:
Это некоторые причины, по которым люди пишут свои собственные синтаксические анализаторы, потому что они ' я застрял при чтении файлов, созданных со всеми этими разными настройками . Или они пишут свои собственные сериализаторы , потому что целевая система имеет множество этих идиосинкразий .
Если вас не волнуют эти проблемы, просто используйте наиболее удобную библиотеку. Но поймите, что они там есть.
Пространство имен VB имеет отличный класс TextFieldParser . Я знаю, что люди, работающие с C #, не любят ссылаться на библиотеки с этого «базового» языка, но это неплохо.
Он находится в Microsoft.VisualBasic.FileIO.TextFieldParser
Я имел обыкновение возиться с OLEDB, создание файлов определения столбцов и т. д. - но найдите TextFieldParser очень простым и удобным инструментом для анализа любых файлов с разделителями.
После некоторого дополнительного расследования обнаружилось также следующее: http://www.filehelpers.com/
Кажется, это полная структура для чтения файлов, а не только файлов csv. .
(примечание: просто прочтите материалы на сайте, еще не использовали)
Я почти уверен, что вы можете прочитать CSV-файл в DataTable с помощью одной строчки кода. Попав в DataTable, вы можете сортировать, фильтровать, повторять и т. Д.
В этом вопросе есть несколько примеров чтения CSV в DataTables.
KBCsv - еще один вариант, особенно если вам нужна эффективность и способность работать с большими CSV-файлами.
Раскрытие: я написал KBCsv, отсюда и «KB»;)
Попробуйте CsvHelper (поддерживаемая мной библиотека). Он также доступен через NuGet .
CsvHelper позволяет вам читать ваш CSV-файл прямо в ваш собственный класс.
var streamReader = // Create a reader to your CSV file.
var csvReader = new CsvReader( streamReader );
List<MyCustomType> myData = csvReader.GetRecords<MyCustomType>();
CsvReader автоматически определит, как сопоставить имена свойств на основе строки заголовка (это настраивается). Вместо отражения он использует скомпилированные деревья выражений, поэтому работает очень быстро.
Он также очень расширяемый и настраиваемый.