c# - 无法解析方法 Sum

标签 c# linq

尝试重用 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/

相关文章:

c# - 从字符串创建属性选择器表达式

c# - 使用 lambda 表达式调用字典的键对象的方法

c# - LINQ to Entities/LINQ to SQL : switching from server (queryable) to client (enumerable) in the middle of a query comprehension?

c# - 使用 iTextSharp 在 PDF 上添加图章/水印/内容

c# - 什么定义了内存流的容量

c# - 在 winform 中安装和使用特定字体

c# - LINQ to XML 后代中的后代

sql - LINQ 中的 GETDATE()

c# - moq 模拟对象与实际类有多少相似之处?

c# httpclient POST 请求 : cant send special characters