c# - 循环 A 列表的十进制列表

标签 c# linq rounding

我试图找到一种更短的方法来舍入 List<List<decimal>> 中的每个元素,并想知道是否可以使用 Linq 缩短它?

我试过很多方法,比如这个

List<List<Decimal>> masterList = dataSet
.Select(x => x.Values)
.ToList()
.Select(i => Math.Round(i, 2));  
/// THIS GIVES AN EXCEPTION (CANNOT CONVERT FROM System.Collections.Generic.List<decimal> to 'double'

这是我目前的做法吗?

List<List<Decimal>> masterList = dataSet.Select(x => x.Values).ToList();

foreach (var list in masterList)
{
    for(var i = 0; i < list.Count; i++)
    {
        list[i] = Math.Round(list[i], 2);
    }
}

最佳答案

你应该使用 Decimal.Round,而不是 Math.Round,来完成这项工作:

masterList = masterList.Select(
    x => x.Select(y => Decimal.Round(y, 2)).ToList()
    ).ToList();

编辑 小数位数 (2)。此外,问题似乎出在 LINQ 语句中,而不是使用 Math.RoundDecimal.Round

Decimal.Round 是我对 decimal 大小写的偏好,尤其是当 decimal 值需要转换为最短的 时整数。格式非常方便:Decimal.Round(val)

关于c# - 循环 A 列表的十进制列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906731/

相关文章:

c# - 使用 View 模型的WPF MVVM更新模型

c# - 通用类型父列表不接受子类型是父列表类型的子类型

c# - 无法加载文件或程序集 'System.Data.Linq,版本 = 4.0.0.0

c# - 如何将 LINQ to SQL 查询结果添加到 Observable Collection?

python - 如何在 numpy 中始终对 XX.5 进行舍入

c# - 如何将数字转换为泛型类型?

c# - 如何处理从 DataContext.ExecuteQuery 返回的未知类型的对象

c# - LINQ group by 连接并计算同一项目的出现次数

javascript 数学,以 .05 为增量四舍五入到小数点后两位

python - 如何在python中四舍五入到小数点后两位