2013-05-13 49 views
2

我有剃刀视图:LINQ和如何显示货币

<td>@payments.Sum(p => p.Amount)</td> 

我希望它显示为货币等有“$”和最终两位小数。

我认为你通常会像{0:C}那样。

我不知道如何将它融合到我所得到的中,因为Sum没有格式重载。

我需要用css类来做到这一点吗?

+1

我认为你需要使用'ToString'。这是一个值与格式的问题 - 对于格式,它是该值的表示形式,您需要调用“ToString”(或其他格式的方法)。 – 2013-05-13 01:30:20

回答

5

你可以这样做:

<td>@String.Format("{0:C}", payments.Sum(p => p.Amount))</td> 
4
<td>@payments.Sum(p => p.Amount).ToString("C")</td> 

我觉得这是比String.Format一个稍微更有效的呼叫。请参阅answer

+1

'ToString()'和'String.Format'有趣的链接。为了一致性,我倾向于在这种情况下使用'String.Format',因为它处理'ToString()'会窒息的'null'引用。在这种情况下,它并不重要,因为Sum()总是返回一个整数值而不会是null。 – Yuck 2013-05-13 01:39:02

+2

@Yuck。谢谢。我记得几年前参加过一场活动,演讲者将'ToString'与'Format'进行了比较,结果让我印象深刻(并且有点惊讶)。我倾向于使用格式化字符串来支持'ToString',但它确实是一个微型优化。除非是数百万次迭代,否则任何选项都可以。 – 2013-05-13 01:44:33