У меня есть список целочисленных значений (List) и я хотел бы создать строку значений, разделенных запятыми. То есть все элементы в списке выводятся в один список через запятую.
Мои мысли ... 1. Передай список методу. 2. Используйте stringbuilder для итерации списка и добавления запятых 3. Проверьте последний символ и, если это запятая, удалите его.
Что ты думаешь? Это лучший способ?
Как изменился бы мой код, если бы в будущем я хотел обрабатывать не только целые числа (мой текущий план), но и строки, long, double, bools и т. Д. И т. Д.? Я думаю, заставить его принять список любого типа.
List<int>
не имеет методаSelect
в рамках 3.5, если я что-то упустил.using
заявление.System.Linq.Enumerable
(и, конечно, вам понадобитсяSystem.Core.dll
сборка, но, вероятно, она у вас уже есть). Видите ли,List<int>
никогда не имеетSelect
в качестве метода. Скорее,System.Linq.Enumerable
определяетSelect
как метод расширенияIEnumerable<T>
,List<int>
примером которого является. Таким образом, вам нужноSystem.Linq.Enumerable
в вашем импорте выбрать этот метод расширения.x.ToString(CultureInfo.InvariantCulture)
. Это будет использовать точку в качестве десятичного разделителя.в 3.5 я все еще смог сделать это. Это намного проще и не требует лямбды.
источник
ToArray()
МетодList<int>
не может быть использован с аргументом типа в рамках 3.5, если я что-то упустил.Вы можете создать метод расширения, который вы можете вызвать на любом IEnumerable:
Затем вы можете просто вызвать метод из исходного списка:
источник
Вы можете использовать
String.Join
.источник
ConvertAll
здесь - обаint
иstring
будут выведены.Array.ConvertAll(...' you can just do
list.ConvertAll (e => e.ToString ()). ToArray) `, просто меньше печатать.Если какое-либо тело хочет преобразовать список пользовательских объектов класса вместо списка строк, переопределите метод ToString вашего класса представлением строки csv вашего класса.
Затем следующий код может быть использован для преобразования этого списка классов в CSV с заголовком столбца
источник
Поскольку код в ссылке, предоставленной @Frank, создал файл CSV из общего списка .NET, возникла небольшая проблема с завершением каждой строки, когда
,
я изменил код, чтобы избавиться от него. Надеюсь, он кому-нибудь поможет.источник
dev
существует, но не файл ... я не использую это право?sw.Write(string.Join(",", props.Select(d => d.Name).ToArray()) + newLine);
Не проверено, но не знаете, чего вы пытаетесь достичьЯ объясню это подробно в этом посте . Я просто вставлю код здесь с краткими описаниями.
Вот метод, который создает строку заголовка. Он использует имена свойств в качестве имен столбцов.
Этот метод создает все строки значений
И вот метод, который объединяет их и создает фактический файл.
источник
|
создаю файлы с разделителями, используя улучшенную версию. Спасибо!Любое решение работает, только если список список (из строки)
Если у вас есть общий список ваших собственных объектов, таких как list (of car), где car имеет n свойств, вы должны зациклить PropertiesInfo каждого объекта car.
Посмотрите на: http://www.csharptocsharp.com/generate-csv-from-generic-list
источник
Мне нравится хороший простой метод расширения
Затем вы можете просто вызвать метод из исходного списка:
Чище и проще для чтения, чем некоторые другие предложения.
источник
Проблема с String.Join заключается в том, что вы не обрабатываете запятую, уже существующую в значении. Если запятая существует, вы заключаете значение в кавычки и заменяете все существующие кавычки двойными кавычками.
Смотрите модуль CSV
источник
Библиотека CsvHelper очень популярна в Nuget. Вы этого достойны, чувак! https://github.com/JoshClose/CsvHelper/wiki/Basics
Использовать CsvHelper действительно легко. Это настройки по умолчанию, которые настроены для наиболее распространенных сценариев.
Вот немного данных настройки.
Actors.csv:
Actor.cs (объект пользовательского класса, представляющий актера):
Чтение файла CSV с помощью CsvReader:
var актерыList = csv.GetRecords ();
Запись в файл CSV.
источник
По какой-то причине @AliUmair отменил редактирование своего ответа, исправляющего его код, который не работает как есть, поэтому вот рабочая версия, которая не имеет ошибки доступа к файлу и правильно обрабатывает нулевые значения свойств объекта:
источник
http://cc.davelozinski.com/c-sharp/the-fastest-way-to-read-and-process-text-files
На этом веб-сайте было проведено обширное тестирование о том, как записывать в файл с использованием буферизированного средства записи, считывание строк за строкой кажется наилучшим способом, а использование построителя строк было одним из самых медленных.
Я много использую его методы для написания материала, чтобы он хорошо работал.
источник
Универсальный метод расширения ToCsv ():
Примеры использования:
Реализация
источник
Вот мой метод расширения, он возвращает строку для простоты, но моя реализация записывает файл в озеро данных.
Он предусматривает любой разделитель, добавляет к строке кавычки (в случае, если они содержат разделитель), а сделки будут иметь нулевые значения и пробелы.
Использование:
источник