-1 votos

Seleccionar el maximo, minimo y promedio de un arreglo de objetos en c#

En un arreglo de objetos necesito mostrar el objeto que tiene el mayor valor y el que tiene el menor valor y al final el promedio de los valores de todos los objetos, he podido obtener el mayor y menor valor con array.reverse y array.sort pero no se como mostrar el objeto que lo contiene , el programita es de "dias" entonces no se como hacer para que muestre por ejemplo , el mayor valor es:... y fue en el dia(esto no se como sacarlo) :( espero se comprenda mi duda , no quiero el valor sino la posicion del objeto mas bien

2voto

Alejandro Recort Puntos 115

Si usas Sort, crea tu propio objeto IComparer<>

.NET 3.5 o superior? Agrega una referencia a System.Linq y usa sus funciones con expresiones Lambda. Un ejemplo con verduras:

List<Verdura> misverduras = new List<Verdura>();
//digamos que aquí se puebla la colección
misverduras = CompraDelSuper();

Verdura LaMasCara = misverduras.OrderBy((v) =>  v.Precio).Descending().FirstOrDefault();
Verdura LaMasBarata = misverduras.OrderBy((v) =>  v.Precio).FirstOrDefault();

Int32 importeTotal = 0; 
for each (Verdura v in misverduras){
 importeTotal += v.Precio;
}

Int32 promedio = (importeTotal / misverduras.Count)

1 votos

Todo bien salvo que al usar linq estás recorriendo 3 veces el array (en 2 de ellas además lo estás ordenando) con el sobre coste que eso supone. Haz algo asi: int max = int.MinValue; int min = int.MaxValue; int importeTotal = 0; foreach (var v in misverduras) { importeTotal += v.Precio; if (v.Precio > max) max = v.Precio; if (v.Precio < min) min = v.Precio; } El resto, está bien. Harás solo un recorrido sobre el array, lo cual reduce los ciclos de reloj que tu programa necesita para llevar a cabo la ejecución. Utiliza siempre que puedas LinQ.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X