Czy jest funkcja w C #, aby szybko przekonwertować część kolekcji na ciąg i oddzielić wartości za pomocą separatora?
Na przykład:
List<string> names
-> string names_together = "John, Anna, Monica"
Możesz użyć String.Join
. Jeśli masz List<string>
, możesz ToArray
najpierw zadzwonić :
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
W .NET 4 nie potrzebne ToArray
już, ponieważ nie jest przeciążenie String.Join
, która pobiera IEnumerable<string>
.
Wyniki:
John, Anna, Monica
Możesz to również zrobić za pomocą linq, jeśli chcesz
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Chociaż wolę składnię inną niż linq w odpowiedzi Quartermeistera i myślę, że Aggregate
może działać wolniej (prawdopodobnie więcej operacji łączenia łańcuchów).
Aggregate
lepiej jest do operacji typu Math. W przypadku łańcuchów ta operacja jest podobna dofor each
dodawania i dodawania do ciągu, który jest bardzo powolny i nieefektywny, ponieważ tworzysz nowy ciąg dla każdego elementu, który istnieje na liście.