使用ToString重新格式化Linq中的数字字段

时间:2012-01-03 06:12:26

标签: c# linq tostring

我有一个LINQ查询,它创建一个匿名集合。我要回的一件事是一个数字,我想格式化为货币而不是50.23888838222等。但是如果我尝试这样的话:

... select new { Amount = e.Item_Amount.ToString("C") }

我被告知'没有重载.ToString需要1个参数。

但是,在更改单个字符串时,此代码在其他位置正常工作。

我有这样的问题与Linq to Sql并理解为什么,但这只是一个内存集合。实现这一目标的最佳方法是什么?

由于

2 个答案:

答案 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") 
}