我试图找到一种更短的方法来舍入 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.Round
或 Decimal.Round
。
Decimal.Round
是我对 decimal
大小写的偏好,尤其是当 decimal
值需要转换为最短的 时整数
。格式非常方便:Decimal.Round(val)
关于c# - 循环 A 列表的十进制列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906731/