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
列为@for (int i = 0; i < Model.rate; i++)
{
<ul>
<li><a href="#">@i</a></li>
</ul>
}
。
但是我在调试时遇到了这个错误 -
无法转换类型&System; System.Collections.Generic.List`1 [System.Decimal]&#39;输入&#39; System.IConvertible&#39;。
我会在视图页面中使用这个 -
{{1}}
答案 0 :(得分:8)
您正在使用此部分行创建IEnumerable<decimal>
,将值分配给费率
itemlist.Select(m =>m.taxrate)
现在,您使用
将IEnumerable实现为List<decimal>
itemlist.Select(m =>m.taxrate).ToList()
并将此列表传递给Convert.ToDecimal
,据我所知,接收List的Convert.ToDecimal没有重载。因此错误。
要解决您的问题,我们需要知道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
已经是小数
答案 1 :(得分:2)
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()
假设费率为List<decimal>
答案 2 :(得分:0)
这是将列表中的所有项目转换为十进制的正确方法。
rate = itemlist.Select(x => Convert.ToDecimal(x.taxrate)).ToList();