![](/img/trans.png)
[英]How to solve this issue: “Unable to cast object of type 'System.Collections.Generic.List`1[System.DateTime]' to type 'System.IConvertible'.”
[英]Unable to cast object of type 'System.Collections.Generic.List`1[System.Decimal]' to type 'System.IConvertible'
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);
在这个查询中注意,速率有多个来自getitems
项目,其中rate
是Decimal
类型,所以我转换了它。
然后我返回单个实体item
视图,其中只有列rate
是List
。
但我在调试时收到此错误 -
无法将类型为“System.Collections.Generic.List`1 [System.Decimal]”的对象强制转换为“System.IConvertible”。
我将在视图页面中使用此类 -
@for (int i = 0; i < Model.rate; i++)
{
<ul>
<li><a href="#">@i</a></li>
</ul>
}
您正在创建一个IEnumerable<decimal>
,该行的这一部分将值赋值给rate
itemlist.Select(m =>m.taxrate)
现在,您将IEnumerable实现为List<decimal>
itemlist.Select(m =>m.taxrate).ToList()
并将此列表传递给Convert.ToDecimal
,据我所知,没有Convert.ToDecimal的重载接受List。 因此错误。
要解决您的问题,我们需要知道EstimatesModel.rate的类型
如果它是一个简单的小数(不是小数列表),那么你需要告诉我们应该使用整个列表中的值。 第一个,最后一个,总和,平均值?
例如
rate = itemlist.Max(m =>m.taxrate);
要么
rate = itemlist.First().taxRate;
编辑在下面的评论之后,如果你想在EstimatesModel
类中存储调用db.getitems
返回的所有费率的列表,那么你需要将字段rate
定义为List<decimal>
public class EstimatesModel
{
....
List<decimal> rate;
}
然后你可以简单地建立你的列表
rate = itemlist.Select(m =>m.taxrate).ToList()
不需要Convert.ToDecimal(... m.taxrate ...)
已经是一个小数的taxrate
rate = Convert.ToDecimal(itemlist.Select(m =>m.taxrate).ToList())
是问题所在。 速率是标量decimal
,如果是,你想要最大/最小/平均值吗? 最大限度尝试:
rate = Convert.ToDecimal(itemlist.Max(m =>m.taxrate))
但是,如果要转换itemlist
每个项目并返回列表,请尝试:
rate = itemlist.Select(m =>Convert.ToDecimal(m.taxrate)).ToList()
假设rate是List<decimal>
这是将列表中的所有项目转换为十进制的正确方法。
rate = itemlist.Select(x => Convert.ToDecimal(x.taxrate)).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.