use*_*213 8 c# linq asp.net-mvc
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);
Run Code Online (Sandbox Code Playgroud)
在这个查询中注意,速率有多个来自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>
}
Run Code Online (Sandbox Code Playgroud)
您正在IEnumerable<decimal>
使用该行的这一部分创建一个将值赋给rate的部分
itemlist.Select(m =>m.taxrate)
Run Code Online (Sandbox Code Playgroud)
现在,您将IEnumerable实现为List<decimal>
with
itemlist.Select(m =>m.taxrate).ToList()
Run Code Online (Sandbox Code Playgroud)
并传递此列表Convert.ToDecimal
,据我所知,没有Convert.ToDecimal的重载接受List.因此错误.
要解决您的问题,我们需要知道EstimatesModel.rate的类型
如果它是一个简单的小数(不是小数列表),那么你需要告诉我们应该使用整个列表中的值.第一个,最后一个,总和,平均值?
例如
rate = itemlist.Max(m =>m.taxrate);
Run Code Online (Sandbox Code Playgroud)
要么
rate = itemlist.First().taxRate;
Run Code Online (Sandbox Code Playgroud)
编辑按照下面的评论,如果你想在EstimatesModel
课堂上存储一个由调用返回的所有费率的列表,db.getitems
那么你需要将该字段定义rate
为List<decimal>
public class EstimatesModel
{
....
List<decimal> rate;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地建立你的列表
rate = itemlist.Select(m =>m.taxrate).ToList()
Run Code Online (Sandbox Code Playgroud)
没有必要Convert.ToDecimal(... m.taxrate ...)
为taxrate
已经是一个小数
归档时间: |
|
查看次数: |
43510 次 |
最近记录: |