c# - 如何获取 IEnumerable<object> 的 linq 总和

标签 c# .net generics reflection

如何获取 IEnumerable 对象集合中的数字总和?我确信基础类型将始终是数字,但类型是在运行时确定的。

IEnumerable<object> listValues = data.Select(i => Convert.ChangeType(property.GetValue(i, null), columnType));

之后我希望能够执行以下操作(以下错误:“无法解析方法 Sum”):

var total = listValues.Sum();

有什么想法吗?谢谢。

最佳答案

如果你知道确切的类型总是数字类型,你应该能够使用类似的东西:

double total = listValues.Sum(v => Convert.ToDouble(v));

这会起作用,因为 Convert.ToDouble 会寻找 IConvertible ,由核心数字类型实现。您强制类型为 double 而不是原始类型。

关于c# - 如何获取 IEnumerable<object> 的 linq 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417623/

相关文章:

java - 这在 Java 中的 ArrayList 中是什么意思

c# - 我的日志管理器的路径共享违规

C#多次启动进程

c# - 无序无重复的线程安全集合

.net - MEF 和 Unity 之间以及用途有何不同?

.net - 强制 PowerShell 使用 .NET CLR 版本 2

java - 如果对象不可比较,如何使方法抛出异常?

c# - process.kill() 是否终止 WaitForExit() (没有时间限制)

.net - elasticsearch或RavenDB在插入统计引擎/随机森林方面会更好吗?

spring - Kotlin 中的泛型方法无法识别类型