无法解析方法Sum

本文关键字:方法 Sum | 更新日期: 2023-09-27 18:24:19

尝试重用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);
        }

无法解析方法Sum

LINQ不提供开箱即用的Sum的通用版本,原因是语言和运行时(dynamic之前)不允许添加通用(<T>)值;没有INumber接口,并且该语言不支持泛型类型(<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);

它通过解析+算子,并使用一些烟雾和镜子(这样它就不会变慢,等等)来实现这一点。