c# - 通过匿名传递列名对通用列表的一列求和

标签 c# linq generics

我的代码是这样的

 private static void ShowSum(Label lbl, IEnumerable<dynamic> list, string columnName)
    {
        lbl.Text = list.Sum(x => x.columnName).ToString();
    }

每次调用此函数时,我都试图获取特定列的总和,列名将作为参数传递给此函数。截至目前,这不起作用,因为 columnName 被解释为特定列名称的字符串。实现这一目标的正确方法是什么?

最佳答案

您需要使用反射来通过名称从动态对象中获取属性:

lbl.Text = list.Sum(x => x.GetType().GetProperty(columnName).GetValue(x, null)).ToString();

但我建议您使用强类型而不是动态类型。至少您将能够在编译时而不是运行时捕获一些错误。

关于c# - 通过匿名传递列名对通用列表的一列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645361/

相关文章:

c# - 自定义密码文本框 C# Windows 应用程序

c# - 使用高级加密标准算法 (AES) 在 Typescript 中加密字符串并在 C# 中解密

c# - 如何从 Windows 服务读取文本文件?

entity-framework - Entity Framework -包括每​​个父级的前N个

c# - 使用 LINQ 从字符串中删除字符

c# - 使用 Linq to XML 生成动态 WPF

angular - 将复杂对象转换为查询字符串

c# - 安全发送/检索数据

java - 为什么我们需要有界通配符 <?在 Collections.max() 方法中扩展 T>

来自 null 泛型类型的 Java 泛型数组