c# - 具有动态类型的 LINQ 查询字段<T>

标签 c# linq

我需要使用 linq 对数据表执行求和函数

 var query = from row in data.AsEnumerable()
             group row by row.Field<string>("ID") into grp
             select new
             {
                 Id = grp.Key,
                 sum = grp.Sum(r => r.Field<decimal>("AMOUNT"))
             };

问题是字段 AMOUNT 并不总是十进制,但有时它可能是 Int64 或 Int32。因此,当字段为 Int32 时,我得到一个异常,即转换无效

有没有办法在求和函数中有一个动态字段类型?

最佳答案

在这种情况下 Convert.ToDecimal完美适用于所有数字类型(IConvertible):

 var query = from row in data.AsEnumerable()
             group row by row.Field<string>("ID") into grp
             select new
             {
                 Id = grp.Key,
                 sum = grp.Sum(r => Convert.ToDecimal(r["AMOUNT"])
             };

关于c# - 具有动态类型的 LINQ 查询字段<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45996089/

相关文章:

c# - 使用 FileReader.readAsDataUrl 上传图片到 Web Api 服务

c# - 基于属性选择的 LINQ 查询

c# - 尝试使用 linq 在第一次匹配后获取所有元素

c# - 无法获取 xml 文件中根元素的子元素

c# - 将匿名类型组传递给函数

c# - 在 LINQ 中忽略参数的正确方法是什么?

c# - 如果数据库尚不存在则创建

c# - Process.Start 是否存储远程执行文件的本地副本?

c# - 如何将 .Net 中的 System.Decimal 四舍五入到一些有效数字

c# - BackgroundWorker 限制 worker 数量并在可用时创建它们