web-dev-qa-db-fra.com

Convertir une chaîne en Liste <chaîne> sur une ligne?

J'ai une ficelle:

var names = "Brian,Joe,Chris";

Est-il possible de convertir cela en un List<string> délimité par , sur une ligne?

78
Brian David Berman
List<string> result = names.Split(new char[] { ',' }).ToList();

Ou même plus propre par la suggestion de Dan:

List<string> result = names.Split(',').ToList();
158
Matt Greer

Le List<T> a un constructeur qui accepte un IEnumerable<T>:

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

37
Nathan Anderson

Je préfère ceci car cela empêche une seule liste d'éléments avec un élément vide si votre chaîne source est vide:

  IEnumerable<string> namesList = 
      !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
2
KingOfHypocrites

Fractionner une chaîne délimitée par des caractères et renvoyer tous les éléments non vides.

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
Crying Freeman

Si vous avez déjà une liste et souhaitez ajouter des valeurs à partir d'une chaîne délimitée, vous pouvez utiliser AddRange ou InsertRange . Par exemple:

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