Я пытаюсь кодировать метод расширения Linq MinByC# тест, если переменная назначена
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;
}
}
Я думаю, что моя логика верна и для чтения. Но я получаю сообщение об ошибке сборки
Использование неназначенной локальной переменной «мин»
Что я могу сделать по этому поводу? Могу ли я проверить, назначена ли переменная?
Уточнение: функция MinBy может ответить на следующий вопрос. Какое из чисел [-5, -2, 3] имеет наименьший квадрат?
> new List<int>{-5,-2,3}.MinBy(x => x*x)
-2
функция .NET в Min отвечает на другой вопрос (который является наименьшим из квадратов)
> new List<int>{-5,-2,3}.Min(x => x*x)
4
IQueryable <> был бы даже лучше IEnumerable <> imho для этого. – Alex
Что такое IQueryable? –
Проверьте это на MSDN, это тип коллекции, который позволяет цепочку запросов, очень мощный. – Alex