尝试重用 Sum
但出现此错误:
cannot resolve method 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);
}
最佳答案
LINQ 不提供开箱即用的通用版本 Sum
,因为语言和运行时(dynamic
之前)不允许添加通用(<T>
)值;没有INumber
接口(interface),并且该语言不支持通用类型 ( +
) 上的运算符 ( <T>
)。要么切换到需要 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);
它通过解析 +
来实现运营商,并使用一些烟雾和镜子(这样它就不会慢等)。
关于c# - 无法解析方法 Sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9273134/