试图重用Sum但得到这个错误:
无法解析方法Sum
我怎样才能改变我的语法
private static void AggregatesData(User user)
{
user.TotalActiveUsers = SumToolbarsData(user.bars,(tb => tb.ActiveUsers));
user.TotalInstalls = SumToolbarsData(user.bars, (tb => tb.Installs));
user.TotalBalance = SumToolbarsData(user.bars, (tb => tb.Balance));
}
private static T SumToolbarsData<T>(List<Bar> bars, Func<Bar, T> selector)
{
return bars.Sum<T>(selector);
}
Run Code Online (Sandbox Code Playgroud)
LINQ不提供开箱即用的通用版本Sum,因为语言和运行时(之前dynamic)不允许添加 generic(<T>)值; 没有INumber接口,语言不支持+泛型类型(<T>)上的operator ().无论是切换到该采取过载Func<T, float>,Func<T, int>等-或使用MiscUtil库,不包括一般的Sum<T>实现,具体如下:
public static TSource Sum<TSource>(this IEnumerable<TSource> source);
public static TValue Sum<TSource, TValue>(this IEnumerable<TSource> source,
Func<TSource,TValue> selector);
Run Code Online (Sandbox Code Playgroud)
它通过解析+操作员,使用一些烟雾和镜子(使它不慢等)来做到这一点.