Tengo una lista de cadenas, y estas cadenas contienen números y palabras.Linq - Ordenar por número luego letras
Lo que quería hacer es pedir que por los números (por orden numérico), seguido de las palabras (por orden alfabético)
Mi lista no contiene una mezcla de los dos ... aquí es un ejemplo
1, 5, 500, LT, RT, 400 -> LINQ -> 1, 5, 400, 500, LT, RT
Aquí está un ejemplo de lo que tengo, que funciona, pero Me preguntaba si hay una mejor manera de escribirlo.
int results = 0;
// Grabs all voltages
var voltage = ActiveRecordLinq.AsQueryable<Equipment>()
.OrderBy(x => x.Voltage)
.Select(x => x.Voltage)
.Distinct()
.ToList();
// Order by numeric
var numberVoltage = voltage
.Where(x => int.TryParse(x, out results))
.OrderBy(x => Convert.ToInt32(x));
// Then by alpha
var letterVoltage = voltage
.Where(x=> !String.IsNullOrEmpty(x))
.Where(x => !int.TryParse(x, out results))
.OrderBy(x => x);
return numberVoltage.Union(letterVoltage)
¡Gracias por la ayuda!
¿Por qué mantiene el análisis int, ¿el voltaje no está definido como int? – Jimmy
@Jimmy - No, el voltaje no se define como int porque contiene algunas palabras, en este caso "LT". También se define como cadena en la base de datos – ChickSentMeHighE