0
我嘗試使用下面的代碼創建一個通用的擴展方法,但它給編譯無法創建通用的擴展方法
public static class extentions<TSource, TResult>
{
public static IEnumerable<TSource> GetWholeHerichy(this IEnumerable<TSource> source, Func<TSource, TResult> KeySelector, Func<TSource, TResult> FKeySelector, TResult KeyElementid)
{
var k = source.Where(a => EqualityComparer<TResult>.Default.Equals(KeyElementid, KeySelector(a))).ToList();
while(true)
{
var nextLevel = source.Where(a => k.Select(b => KeySelector(b)).Contains(FKeySelector(a)) && ! k.Select(b => KeySelector(b)).Contains(KeySelector(a)));
if (nextLevel == null || nextLevel.Count() < 1)
break;
k.AddRange(nextLevel);
}
return k.AsEnumerable();
}
}
誤差
錯誤1個擴展方法必須在規定的時間錯誤非泛型靜態類
如果我刪除<TSource, TResult>
從public static class extentions<TSource, TResult>
使類非通用再TSource
和TResult
在全班變得不確定
您需要使方法通用:'GetWholeHerichy' –