¿Alguien sabe cómo puedo establecer un valor predeterminado para un promedio? Tengo una línea como esta ...Método de extensión promedio en Linq para el valor predeterminado
dbPlugins = (from p in dbPlugins
select new { Plugin = p, AvgScore = p.DbVersions.Average(x => x.DbRatings.Average(y => y.Score)) })
.OrderByDescending(x => x.AvgScore)
.Select(x => x.Plugin).ToList();
que arroja un error porque todavía no tengo calificaciones. Si no tengo ninguno, quiero que el promedio sea predeterminado a 0. Estaba pensando que este debería ser un método de extensión en el que podría especificar cuál debería ser el valor predeterminado.
No creo que esta sea una buena idea. Supongamos que tiene una 'List ' y 'A' es una clase con una propiedad' int' 'Num'. Necesita escribir el código como 'listofA.DefaultItEmpty (defaultA) .Average (a => a.Num)'. Necesitas construir un 'defaultA' aquí. –
@DannyChen: No es verdadero: 'listofA.Select (a => a.Num) .DefaultIfEmpty (0) .Average()'. – Jon
@Jon: Pero volviste al principio ahora, 'x.DbRatings' puede ser nulo aquí. 'p.DbVersions.Select (x => x.DbRatings) .DefaultIfEmpty (defaultRatings)', debe especificar '' DefaultRatings', no es simplemente un número. –