Odpowiedzi:
Może próbujesz to zrobić
string combindedString = string.Join( ",", myList.ToArray() );
Możesz zastąpić „,” tym, przez co chcesz podzielić elementy na liście.
Edycja : Jak wspomniano w komentarzach, możesz również zrobić
string combindedString = string.Join( ",", myList);
Odniesienie:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
Idę z przeczuciem i zakładam, że chcesz połączyć wynik wywołania ToStringkażdego elementu listy.
var result = string.Join(",", list.ToArray());
Możesz użyć string.Join:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
Wynik byłby:
Red
Blue
Green
Alternatywnie Environment.NewLinemożesz zastąpić go wybranym przez Ciebie separatorem linii opartym na łańcuchach.
Jeśli chcesz czegoś nieco bardziej złożonego niż proste połączenie, możesz użyć LINQ np
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Weźmie [„A”, „B”, „C”] i wyprodukuje „(a) (b) (c)”
String.Join(" ", myList)lub String.Join(" ", myList.ToArray()). Pierwszy argument to separator między podciągami.
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
W zależności od wersji .NET może być konieczne użycie najpierw ToArray () na liście.
Masz List<string>- więc jeśli chcesz je połączyć, coś w tym rodzaju
string s = string.Join("", list);
działałoby (przynajmniej w .NET 4.0). Pierwszym parametrem jest separator. Możesz więc także wstawić przecinek itp.
Możesz także rozważyć użycie StringBuilder do wykonywania konkatenacji zamiast tworzenia listy.
.ToString()Metoda dla typów referencyjnych zwykle postanawia wrócić doSystem.Object.ToString() , jeśli nie zastępują go w rodzaju pochodzącej (ewentualnie przy użyciu metody rozszerzenie dla typów wbudowanych). Domyślnym zachowaniem dla tej metody jest wyświetlenie nazwy typu, na który jest wywoływana. Widzisz więc oczekiwane zachowanie.
Możesz spróbować czegoś takiego, string.Join(", ", myList.ToArray());aby to osiągnąć. To dodatkowy krok, ale można go zastosować w metodzie rozszerzenia, System.Collections.Generic.List<T>aby było trochę łatwiej. Coś takiego:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(Zauważ, że jest to kod z wolnej ręki i nie przetestowany. W tej chwili nie mam pod ręką kompilatora. Więc będziesz chciał z nim trochę poeksperymentować).
Trudno powiedzieć, ale może szukasz czegoś takiego:
var myString = String.Join(String.Empty, myList.ToArray());
Spowoduje to niejawne wywołanie metody ToString () na każdym elemencie na liście i połączenie ich.
String.Concat()osiągnie to samo lepiej.
Jeśli szukasz kolejno pozycje w liście do wielkiego długiego łańcucha, to zrobić: String.Join("", myList). Niektóre starsze wersje frameworka nie pozwalają na przekazanie IEnumerable jako drugiego parametru, więc może być konieczne przekonwertowanie listy na tablicę poprzez wywołanie funkcji .ToArray ().
Bezpośrednia odpowiedź na twoje pytanie brzmi String.Join jak mówili inni.
Jeśli jednak potrzebujesz pewnych manipulacji, możesz użyć Aggregate:
List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");
string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();
Ta metoda pomogła mi przy próbie pobrania danych z pliku tekstowego i zapisania ich w tablicy, a następnie przypisania do zmiennej łańcuchowej.
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
Mam nadzieję, że może komuś pomóc !!!!
wszystkie powyższe odpowiedzi NIE działają dla zagnieżdżonych list.