我想編寫一個LINQ MinBy擴展方法,如果變量分配
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;
}
}
我覺得我的邏輯是正確的,可讀的C#測試。但我得到一個生成錯誤
使用的未分配的局部變量「分鐘」
我能做些什麼呢?我可以測試變量是否已分配?
說明: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