我试图找到一种更短的方法来舍入 a 中的每个元素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'
Run Code Online (Sandbox Code Playgroud)
这是我目前的做法吗?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您应该使用Decimal.Round,而不是Math.Round来完成这项工作:
masterList = masterList.Select(
x => x.Select(y => Decimal.Round(y, 2)).ToList()
).ToList();
Run Code Online (Sandbox Code Playgroud)
编辑带有小数的(2)的数目。另外,问题似乎出在LINQ语句中,而不是使用Math.RoundorDecimal.Round。
Decimal.Round不过是我对decimalcase 的偏好,尤其是当decimal值需要转换为最短的int. 格式非常方便:Decimal.Round(val)
| 归档时间: |
|
| 查看次数: |
4060 次 |
| 最近记录: |