Estoy tratando de codificar un método de extensión LINQ MinByC# prueba si la variable asignada
public static class Extensions
{
public static T MinBy<T>(this IEnumerable<T> source, Func<T,int> selector)
{
T min;
int? minKey = null;
foreach (var x in source)
{
var key = selector(x);
if (minKey == null || key < minKey)
{
minKey = key;
min = x;
}
}
if (minKey == null)
{
throw new ArgumentException("source should not be empty");
}
return min;
}
}
Creo que mi lógica es correcta y legible. Pero me da un error de generación
El uso de variable local no asignada 'min'
Qué puedo hacer acerca de esto? ¿Puedo probar si la variable está asignada?
Aclaración: Una función MinBy puede responder a la siguiente pregunta. ¿Cuál de los números [-5, -2, 3] tiene el cuadrado más pequeño?
> new List<int>{-5,-2,3}.MinBy(x => x*x)
-2
función Min de .NET responde a una pregunta diferente (que es la más pequeña de las plazas)
> new List<int>{-5,-2,3}.Min(x => x*x)
4
IQueryable <> sería aún mejor que IEnumerable <> en mi humilde opinión de este. – Alex
¿Qué es IQueryable? –
Compruébelo en MSDN, es un tipo de colección que permite el encadenamiento de consultas, muy poderoso. – Alex