Argumento '2': não é possível converter de 'System.Collections.Generic.List <string>' para 'string []'
Ash
9
Eu usei esse recentemente, ele funciona - basta omitir o .ToArray ()
Adrian K
3
@AdrianK, você está correto porque o .Net 4.0 adicionou a capacidade de passar qualquer IEnumerable <string>. No entanto 4.0 foi lançado em abril de 2010, antes desta pergunta e resposta foram publicadas por isso, talvez as pessoas aqui foram apenas ainda não conscientes disso (excepto alguns abaixo)
Andrew Steitz
Para vb.net, Dim combindedString As String = String.Join (",", myList.ToArray ())
PartTimeNerd
55
Vou seguir meu pressentimento e supor que você deseja concatenar o resultado de chamar ToStringcada elemento da lista.
O .ToString()método para tipos de referência geralmente volta paraSystem.Object.ToString() , menos que você o substitua em um tipo derivado (possivelmente usando métodos de extensão para os tipos internos). O comportamento padrão desse método é gerar o nome do tipo em que é chamado. Então, o que você está vendo é o comportamento esperado.
Você pode tentar algo parecido string.Join(", ", myList.ToArray());para conseguir isso. É uma etapa extra, mas pode ser aplicada em um método de extensão System.Collections.Generic.List<T>para facilitar um pouco. Algo assim:
Se você está olhando para transformar os itens em uma lista em uma grande cadeia longa, faça o seguinte: String.Join("", myList). Algumas versões mais antigas da estrutura não permitem que você passe um IEnumerable como o segundo parâmetro, portanto, pode ser necessário converter sua lista em uma matriz chamando .ToArray ().
Respostas:
Talvez você esteja tentando fazer
Você pode substituir "," pelo que deseja dividir os elementos da lista.
Edit : Como mencionado nos comentários, você também pode fazer
Referência:
fonte
Vou seguir meu pressentimento e supor que você deseja concatenar o resultado de chamar
ToString
cada elemento da lista.fonte
Você poderia usar
string.Join
:O resultado seria:
Como alternativa
Environment.NewLine
, você pode substituí-lo por um separador de linhas baseado em string de sua escolha.fonte
Se você quiser algo um pouco mais complexo que uma simples junção, use o LINQ, por exemplo
Vai pegar ["A", "B", "C"] e produzir "(a) (b) (c)"
fonte
String.Join(" ", myList)
ouString.Join(" ", myList.ToArray())
. O primeiro argumento é o separador entre as substrings.Dependendo da sua versão do .NET, talvez seja necessário usar o ToArray () na lista primeiro.
fonte
Você tem um
List<string>
- então, se você deseja que eles sejam concatenados, algo comofuncionaria (pelo menos no .NET 4.0). O primeiro parâmetro é o delimitador. Então você também pode delimitar vírgulas etc.
Você também pode querer usar o StringBuilder para executar concatenações, em vez de formar uma lista.
fonte
O
.ToString()
método para tipos de referência geralmente volta paraSystem.Object.ToString()
, menos que você o substitua em um tipo derivado (possivelmente usando métodos de extensão para os tipos internos). O comportamento padrão desse método é gerar o nome do tipo em que é chamado. Então, o que você está vendo é o comportamento esperado.Você pode tentar algo parecido
string.Join(", ", myList.ToArray());
para conseguir isso. É uma etapa extra, mas pode ser aplicada em um método de extensãoSystem.Collections.Generic.List<T>
para facilitar um pouco. Algo assim:(Observe que este é um código à mão livre e não testado. Eu não tenho um compilador à mão no momento. Portanto, convém experimentar um pouco.)
fonte
É difícil dizer, mas talvez você esteja procurando algo como:
Isso implicitamente chamará o método ToString () em cada um dos itens da lista e os concatenará.
fonte
String.Concat()
vai conseguir a mesma coisa melhor.Se você está olhando para transformar os itens em uma lista em uma grande cadeia longa, faça o seguinte:
String.Join("", myList)
. Algumas versões mais antigas da estrutura não permitem que você passe um IEnumerable como o segundo parâmetro, portanto, pode ser necessário converter sua lista em uma matriz chamando .ToArray ().fonte
A resposta direta à sua pergunta é
String.Join
como outros já mencionaram.No entanto, se você precisar de algumas manipulações, poderá usar
Aggregate
:fonte
Esse método me ajudou ao tentar recuperar dados do arquivo de texto e armazená-lo na matriz e, em seguida, atribuí-lo a uma string disponível.
Espero que possa ajudar alguém !!!!
fonte
Isso parece funcionar para mim.
fonte
todas as respostas acima NÃO funcionam para listas aninhadas.
fonte