Bir dizem var:
var names = "Brian,Joe,Chris";
Bunu tek satırda List<string>
sınırlanmış olarak dönüştürmenin bir yolu var mı ,
?
Bir dizem var:
var names = "Brian,Joe,Chris";
Bunu tek satırda List<string>
sınırlanmış olarak dönüştürmenin bir yolu var mı ,
?
for
daha sıkıcı, hataya açık ve net olmayan bir döngü kullanmaktan kaçınmak istiyor .
Yanıtlar:
List<string> result = names.Split(new char[] { ',' }).ToList();
Ya da Dan'in önerisiyle daha temiz:
List<string> result = names.Split(',').ToList();
new char[] { }
kısmı dışarıda bırakıyorum . Bu şekilde daha okunabilir, en azından benim için.
System.LINQ
alanını getirdin mi?
List<T>
Bir kabul eden bir kurucu sahiptir IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
Bunu tercih ediyorum çünkü kaynak dizeniz boşsa, boş bir öğe içeren tek bir öğe listesini engelliyor:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
Karakterlerle ayrılmış bir dizeyi böler ve boş olmayan tüm öğeleri döndürür.
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
string given="Welcome To Programming";
List<string> listItem= given.Split(' ').ToList();//Split according to space in the string and added into the list
çıktı:
Welcome
To
Programming
Zaten bir listeniz varsa ve sınırlandırılmış bir dizeden değerler eklemek istiyorsanız, AddRange
veya kullanabilirsiniz InsertRange
. Örneğin:
existingList.AddRange(names.Split(','));
Stringify.Library nuget paketini kullanın
//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 = ';' });