Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“System.IConvertible”_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 无法将类型为“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

在这个查询中,注意rate有多个来自getitems的项,其中rate是Decimal类型,所以我对它进行了转换

然后我返回单个实体项的视图,其中只有列速率是List

但我在调试时遇到了这个错误-

无法将类型为“System.Collections.Generic.List`1[System.Decimal]”的对象强制转换为类型为“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);

这是将列表中的所有项目转换为十进制的正确方法

@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()