Andromeda Asked: 2020-01-23 06:34:24 +0800 CST 2020-01-23 06:34:24 +0800 CST 2020-01-23 06:34:24 +0800 CST 如何从 System.Decimal 列表中删除小数 (,00) 772 我有以下方法 public ActionResult Index() { var zsp = db.Zsp.Include(z => z.Zsptypes).ToList(); return View(zsp); } 返回下表 如何使最后的 .00 不显示?我的模型如下 c# 2 Answers Voted Best Answer Leandro Tuttini 2020-01-23T06:43:00+08:002020-01-23T06:43:00+08:00 我注意到的问题是相同的 EF 模型是您用于 mvc 视图的模型,当您应该ViewModel为视图创建不同的类时: public ZspViewModel{ public string Nombre {get;set;} public string State {get;set;} //resto propiedades } 然后你会像这样创建linq: public ActionResult Index() { var zsp = db.Zsp.Include(z => z.Zsptypes) .Select(x=> new ZspViewModel(){ Nombre = x.Nombre, Stado = x.Stado.ToString("N0") //resto propiedades }); return View(zsp); } 从一种类型转换为另一种类型时,您可以应用格式来删除小数。 ViewModel您必须在 asp.net mvc 的 Model 文件夹中创建该类 另一种技术可以使用DisplayFormatAttribute 类 在这种情况下,您还必须创建一个 ViewModel 类,但它不应用直接转换,而是通过属性来实现 public ZspViewModel{ public string Nombre {get;set;} [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")] public decimal State {get;set;} //resto propiedades } 在这种情况下,linq 不会使用 ToString() 而是直接将一个类的值分配给另一个类。在这些情况下,还建议使用AutoMapper Carlos Muñoz 2020-01-23T06:38:33+08:002020-01-23T06:38:33+08:00 在视图或模型中,您可以.ToString("0")在数字字段上调用该方法。 这将显示四舍五入到小数点后 0 位的数字 如果您需要更多小数,可以使用以下语法: .ToString("N0") N 0、 N 1、 N 2或 N n其中 n 是您需要的小数位数
我注意到的问题是相同的 EF 模型是您用于 mvc 视图的模型,当您应该
ViewModel
为视图创建不同的类时:然后你会像这样创建linq:
从一种类型转换为另一种类型时,您可以应用格式来删除小数。
ViewModel
您必须在 asp.net mvc 的 Model 文件夹中创建该类另一种技术可以使用DisplayFormatAttribute 类
在这种情况下,您还必须创建一个 ViewModel 类,但它不应用直接转换,而是通过属性来实现
在这种情况下,linq 不会使用 ToString() 而是直接将一个类的值分配给另一个类。在这些情况下,还建议使用AutoMapper
在视图或模型中,您可以
.ToString("0")
在数字字段上调用该方法。这将显示四舍五入到小数点后 0 位的数字
如果您需要更多小数,可以使用以下语法:
.ToString("N0")
N 0、 N 1、 N 2或 N n其中 n 是您需要的小数位数