ordenar lista generic c# generics syntax ilist

lista - list generic c#



Sintaxis de C#- Split String en Array por Coma, Convert to Generic List, y Reverse Order (6)

El problema es que está llamando a List<T>.Reverse() que devuelve void .

Usted podría hacer:

List<string> names = "Tom,Scott,Bob".Split('','').ToList<string>(); names.Reverse();

o:

IList<string> names = "Tom,Scott,Bob".Split('','').Reverse().ToList<string>();

Este último es más costoso, ya que revertir un IEnumerable<T> arbitrario IEnumerable<T> implica almacenar en búfer todos los datos y luego cederlo todo, mientras que List<T> puede hacer todo el reverso "en el lugar". (La diferencia aquí es que está llamando al método de extensión Enumerable.Reverse<T>() , en lugar del método de instancia List<T>.Reverse() ).

Más eficiente aún, podrías usar:

string[] namesArray = "Tom,Scott,Bob".Split('',''); List<string> namesList = new List<string>(namesArray.Length); namesList.AddRange(namesArray); namesList.Reverse();

Esto evita la creación de buffers de un tamaño inapropiado, a costa de tomar cuatro declaraciones donde una hará ... Como siempre, pondere la legibilidad frente al rendimiento en el caso de uso real.

¿Cuál es la sintaxis correcta para esto?

IList<string> names = "Tom,Scott,Bob".Split('','').ToList<string>().Reverse();

¿Qué estoy estropeando? ¿Qué significa TSource?


Lo que falta aquí es que .Reverse () es un método nulo. No es posible asignar el resultado de .Reverse () a una variable. Sin embargo, puede alterar el orden para usar Enumerable.Reverse () y obtener su resultado

var x = "Tom,Scott,Bob".Split('','').Reverse().ToList<string>()

La diferencia es que Enumerable.Reverse () devuelve un IEnumerable <T> en lugar de ser inválido return


Me doy cuenta de que esta pregunta es bastante antigua, pero tuve un problema similar, excepto que mi cadena tenía espacios incluidos en ella. Para aquellos que necesitan saber cómo separar una cadena con más que solo comas:

string str = "Tom, Scott, Bob"; IList<string> names = str.Split(new string[] {","," "}, StringSplitOptions.RemoveEmptyEntries);

StringSplitOptions elimina los registros que solo serían un espacio char ...


Prueba esto:

List<string> names = new List<string>("Tom,Scott,Bob".Split('','')); names.Reverse();


Si estás tratando de

  1. Usa múltiples delimitadores
  2. Filtre las cadenas vacías
  3. Recortar espacios principales / finales

siguiente debería 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());

Salida

  • Tom
  • Crucero
  • Scott
  • Chelín
  • a

Ahora puedes revertir el orden obviamente como otros sugirieron.


List<string> names = "Tom,Scott,Bob".Split('','').Reverse().ToList();

Este funciona