masz na myśli string combindedString = string.Join (",", myList.ToArray ());
piła
2
Argument „2”: nie można przekonwertować z „System.Collections.Generic.List <string>” na „string []”
Ash
9
Użyłem tego niedawno, to działa - po prostu pomiń .ToArray ()
Adrian K
3
@AdrianK masz rację, ponieważ .Net 4.0 dodał możliwość przekazywania w dowolnym IEnumerable <ciąg>. Jednak wersja 4.0 została wydana w kwietniu 2010 r., Zanim opublikowano to pytanie i odpowiedź, więc być może ludzie tutaj nie byli jeszcze tego świadomi (z wyjątkiem kilku poniżej)
Andrew Steitz,
W przypadku vb.net Dim combindedString As String = String.Join (",", myList.ToArray ())
PartTimeNerd
55
Idę z przeczuciem i zakładam, że chcesz połączyć wynik wywołania ToStringkażdego elementu 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:
(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ć).
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 ().
Odpowiedzi:
Może próbujesz to zrobić
Możesz zastąpić „,” tym, przez co chcesz podzielić elementy na liście.
Edycja : Jak wspomniano w komentarzach, możesz również zrobić
Odniesienie:
źródło
Idę z przeczuciem i zakładam, że chcesz połączyć wynik wywołania
ToString
każdego elementu listy.źródło
Możesz użyć
string.Join
:Wynik byłby:
Alternatywnie
Environment.NewLine
możesz zastąpić go wybranym przez Ciebie separatorem linii opartym na łańcuchach.źródło
Jeśli chcesz czegoś nieco bardziej złożonego niż proste połączenie, możesz użyć LINQ np
Weźmie [„A”, „B”, „C”] i wyprodukuje „(a) (b) (c)”
źródło
String.Join(" ", myList)
lubString.Join(" ", myList.ToArray())
. Pierwszy argument to separator między podciągami.W zależności od wersji .NET może być konieczne użycie najpierw ToArray () na liście.
źródło
Masz
List<string>
- więc jeśli chcesz je połączyć, coś w tym rodzajudział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.
źródło
.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:(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ć).
źródło
Trudno powiedzieć, ale może szukasz czegoś takiego:
Spowoduje to niejawne wywołanie metody ToString () na każdym elemencie na liście i połączenie ich.
źródło
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 ().źródło
Bezpośrednia odpowiedź na twoje pytanie brzmi
String.Join
jak mówili inni.Jeśli jednak potrzebujesz pewnych manipulacji, możesz użyć
Aggregate
:źródło
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.
Mam nadzieję, że może komuś pomóc !!!!
źródło
Wydaje mi się, że to działa.
źródło
wszystkie powyższe odpowiedzi NIE działają dla zagnieżdżonych list.
źródło