orderby - ordenar array string c#
Ordenar la matriz de elementos usando OrderBy<> (4)
Tengo una serie de elementos y me gustaría clasificarlos en una de sus propiedades. Puedo acceder a la propiedad de elementos utilizando " item.Fields [" FieldName "]. Value " la propiedad se devuelve como una cadena, pero puedo convertirla en un int.
Eché un vistazo a OrderBy <> pero no tengo idea de cómo usarlo.
Si puede usar orderby debería ser fácil, intente lo siguiente. Introduje el int.Parse aunque no es necesario, dependiendo de cómo quieras ordenar realmente.
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));
Utilice el método de clasificación para ordenar una matriz:
Array.Sort(theArray, (a, b) => String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value));
Si no está utilizando C # 3, utiliza un delegado en lugar de una expresión lambda:
Array.Sort(theArray, delegate(Item a, Item b) { return String.Compare(a.Fields["FieldName"].Value, b.Fields["FieldName"].Value); } );
(Esto también funciona con el framework 2, que la extensión OrderBy no lo hace).
Para ser claros, OrderBy
no ordenará la matriz en su lugar; devolverá una nueva secuencia que es una copia ordenada de la matriz. Si eso está bien, entonces quieres algo como:
var sorted = array.OrderBy(item => item.Fields["FieldName"].Value);
Por otro lado, no entiendo su comentario de que la propiedad se devuelve como una cadena, pero que puede convertirla en un int. No puede convertir cadenas a ints, debe analizarlas. Si eso es lo que quisiste decir, probablemente quieras:
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value));
Si quieres eso como una matriz, puedes llamar a ToArray()
después:
var sorted = array.OrderBy(item => int.Parse(item.Fields["FieldName"].Value))
.ToArray();
Alternativamente, puede usar Array.Sort
si desea ordenar en el lugar, pero eso será un poco más complicado.
var sortedArray = items.OrderBy(i => i.property).ToArray();
Si no desea una matriz, puede dejarla desactivada, en cuyo caso tendrá un <Enumerable <> de tipo item.