我有一个LINQ查询,它创建一个匿名集合。我要回的一件事是一个数字,我想格式化为货币而不是50.23888838222等。但是如果我尝试这样的话:
... select new { Amount = e.Item_Amount.ToString("C") }
我被告知'没有重载.ToString需要1个参数。
但是,在更改单个字符串时,此代码在其他位置正常工作。
我有这样的问题与Linq to Sql并理解为什么,但这只是一个内存集合。实现这一目标的最佳方法是什么?
由于
答案 0 :(得分:3)
其nullable
字段(可能)。
Amount = e.Item_Amount.Value.ToString("C")
//or
Amount = (e.Item_Amount ?? 0).ToString("C");
答案 1 :(得分:0)
听起来e.Item_Amount不是数字类型。
您可以将其类型更改为数字类型(如Int32或decimal(最好))或在迭代期间解析值。
select new {
Amount = decimal.Parse(e.Item_Amount).ToString("C")
}
如果您处理可空类型,则可以执行以下操作:
select new {
Amount = (e.Item_Amount ?? 0).ToString("C")
}