编程语言
首页 > 编程语言> > c#-舍入十进制列表

c#-舍入十进制列表

作者:互联网

我试图找到一种更简单的方法来四舍五入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是我首选的十进制形式,尤其是当十进制值需要转换为最短的int时.格式非常方便:Decimal.Round(val)

标签:rounding,linq,c
来源: https://codeday.me/bug/20191026/1933131.html