我写过这样的话:
var _views = (@Model.Views == 1 ? "view" : "views");
var _comments = (@Model.Comments == 1 ? "comment" : "comments");
if(@Model.Views > 0)
{
if (@Model.Comments > 0)
{
@String.Format("{0:n0} {1}, {2:n0} {3}", @Model.Views, _views, @Model.Comments, _comments);
}
else
{
@String.Format("{0:n0} {1}", @Model.Views, _views);
}
}
else if (@Model.Comments > 0)
{
@String.Format("{0:n0} {1}", @Model.Comments, _comments);
}
它确实有效。
显示视频的观看次数和评论数量(例如http://www.voiceofconscience.org/Video/2)
我以低质量的方式解决了一个单一/复数的问题。
我想知道它应该被视为一种“好风格”
电贺 马里乌什
答案 0 :(得分:2)
这有点紧凑,它概括为两个以上的数字:
var items = new List<string>();
if (Model.Views > 0)
items.Add(string.Format("{0:n0} {1}", Model.Views, _views));
if (Model.Comments > 0)
items.Add(string.Format("{0:n0} {1}", Model.Comments, _comments));
var result = ", ".Join(items);
(注意:所有@
使得它看起来像是在编写ASP.NET MVC视图,但我无法理解你是如何放置它们的,所以插入{{1必要的时候。)
答案 1 :(得分:2)
要进行复数化,请查看System.Data.Entity.Design.PluralizationServices.PluralizationService
。
答案 2 :(得分:1)
我认为如果你积累结果字符串而不是运行if-else碎片会更好看。 像这样的Smth:
StringBuilder sb = new StringBuilder();
if(@Model.Views > 0)
sb.AppendFormat("{0:n0} {1}",@Model.Views, _views);
if(@Model.Comments> 0)
sb.AppendFormat("{0:n0} {1}",@Model.Comments, _comments);