Respostas:
O problema é que você está ligando List<T>.Reverse()
e retorna void
.
Você pode fazer:
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
ou:
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
O último é mais caro, pois a reversão de um arbitrário IEnumerable<T>
envolve o armazenamento em buffer de todos os dados e, em seguida, o rendimento de todos - enquanto List<T>
pode fazer toda a reversão "no local". (A diferença aqui é que ele está chamando o Enumerable.Reverse<T>()
método de extensão, em vez do List<T>.Reverse()
método de instância.)
Mais eficiente ainda, você pode usar:
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
Isso evita a criação de quaisquer buffers de tamanho inadequado - ao custo de pegar quatro declarações onde uma servirá ... Como sempre, compare a legibilidade com o desempenho no caso de uso real.
Sei que essa questão é bastante antiga, mas tive um problema semelhante, exceto que minha string tinha espaços incluídos. Para aqueles que precisam saber como separar uma string com mais do que apenas vírgulas:
string str = "Tom, Scott, Bob";
IList<string> names = str.Split(new string[] {","," "},
StringSplitOptions.RemoveEmptyEntries);
O StringSplitOptions remove os registros que seriam apenas um caractere de espaço ...
List<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList();
Este funciona.
O que está faltando aqui é que .Reverse () é um método vazio. Não é possível atribuir o resultado de .Reverse () a uma variável. No entanto, você pode alterar a ordem para usar Enumerable.Reverse () e obter seu resultado
var x = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>()
A diferença é que Enumerable.Reverse () retorna um IEnumerable <T> em vez de ser void return
Se você está tentando
o seguinte deve funcionar:
string str = "Tom Cruise, Scott, ,Bob | at";
IEnumerable<string> names = str
.Split(new char[]{',', '|'})
.Where(x=>x!=null && x.Trim().Length > 0)
.Select(x=>x.Trim());
Resultado
Agora você pode obviamente inverter a ordem como outros sugeriram.