C# 无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“System.IConvertible”
在这个查询中,注意rate有多个来自getitems的项,其中rate是Decimal类型,所以我对它进行了转换 然后我返回单个实体项的视图,其中只有列速率是List 但我在调试时遇到了这个错误- 无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“System.IConvertible” 我会在查看页面中这样使用它-C# 无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“System.IConvertible”,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,在这个查询中,注意rate有多个来自getitems的项,其中rate是Decimal类型,所以我对它进行了转换 然后我返回单个实体项的视图,其中只有列速率是List 但我在调试时遇到了这个错误- 无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“System.IConvertible” 我会在查看页面中这样使用它- var itemlist = (from u in db.getitems
var itemlist = (from u in db.getitems
select u).ToList();
var item= new EstimatesModel
{
id = Convert.ToInt64(estimatelist.id),
expiry_date = estimatelist.expiry_date,
terms_conditions = estimatelist.terms_conditions,
rate = Convert.ToDecimal(itemlist.Select(m =>m.taxrate).ToList())
};
return View(item);
这是将列表中的所有项目转换为十进制的正确方法
@for (int i = 0; i < Model.rate; i++)
{
<ul>
<li><a href="#">@i</a></li>
</ul>
}
rate=Convert.ToDecimalitemlist.Selectm=>m.taxrate.ToList是问题所在。速率是一个标量小数,如果是,是否需要最大/最小/平均值?要最大限度地尝试:
rate=Convert.ToDecimalitemlist.Maxm=>m.taxrate
但是,如果要转换itemlist中的每个项目并返回列表,请尝试:
rate=itemlist.Selectm=>Convert.ToDecimalm.taxrate.ToList
假设rate是一个列表您正在创建一个IEnumerable,该行的这一部分将值分配给rate
rate = itemlist.Select(x => Convert.ToDecimal(x.taxrate)).ToList();
现在,您将IEnumerable具体化为一个具有
并将此列表传递给Convert.ToDecimal,据我所知,Convert.ToDecimal没有重载接受列表。这就是错误
要解决您的问题,我们需要了解EstimatesModel.rate的类型
如果它是一个简单的小数,而不是小数列表,那么您需要告诉我们应该使用整个列表中的值。
第一、最后、总和、平均数
比如说
itemlist.Select(m =>m.taxrate).ToList()
或
根据下面的注释进行编辑,如果要在EstimatesModel类中存储调用db.getitems返回的所有速率的列表,则需要将字段速率定义为列表
无需转换。ToDecimal。。。m、 税率。。。taxrate已经是十进制的但项目中的taxrate类型是什么?@Steve-Decimal18,2我在模型中将rate设置为十进制,并希望从上面的列表中选择所有rate元素。我仍然无法理解-rate=itemlist.Selectm=>Convert.ToDecimalm.taxrate.ToList
itemlist.Select(m =>m.taxrate).ToList()
rate = itemlist.Max(m =>m.taxrate);
rate = itemlist.First().taxRate;
public class EstimatesModel
{
....
List<decimal> rate;
}
rate = itemlist.Select(m =>m.taxrate).ToList()