Преобразовать строку в список <string>в одну строку? - PullRequest
82 голосов
/ 16 февраля 2011

У меня есть строка:

var names = "Brian,Joe,Chris";

Можно ли преобразовать это значение в List<string>, ограниченное , в одной строке?

Ответы [ 6 ]

169 голосов
/ 16 февраля 2011
List<string> result = names.Split(new char[] { ',' }).ToList();

Или даже чище по предложению Дэна:

List<string> result = names.Split(',').ToList();
37 голосов
/ 16 февраля 2011

У List<T> есть конструктор, который принимает IEnumerable<T>:

List<string> listOfNames = new List<string>(names.Split(','));

2 голосов
/ 13 мая 2014

Я предпочитаю это, потому что это предотвращает один список элементов с пустым элементом, если ваша исходная строка пуста:

  IEnumerable<string> namesList = 
      !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
0 голосов
/ 19 июня 2019

Разбить строку, разделенную символами, и вернуть все непустые элементы.

var names = ",Brian,Joe,Chris,,,";
var charSeparator = ",";
var result = names.Split(charSeparator, StringSplitOptions.RemoveEmptyEntries);

https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8

0 голосов
/ 29 марта 2018

Используйте пакет nuget Stringify.Library

//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);

//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions { Delimiter = ';' });
0 голосов
/ 07 июля 2017

Если у вас уже есть список и вы хотите добавить значения из строки с разделителями, вы можете использовать AddRange или InsertRange.Например:

existingList.AddRange(names.Split(','));
...