我需要使用 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/