Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
String 无法在Linq表达式中将字符串类型强制转换为数字类型_String_Linq_Casting_Double - Fatal编程技术网

String 无法在Linq表达式中将字符串类型强制转换为数字类型

String 无法在Linq表达式中将字符串类型强制转换为数字类型,string,linq,casting,double,String,Linq,Casting,Double,关于linq select语句中的数据类型转换,我遇到了一个令人头痛的问题,请如下所示,我想将下面一个字段的字符串类型hightlight转换为double类型,因此我利用convert.ToDouble方法来实现,但失败了。任何帮助或建议都将不胜感激 提前谢谢 var orders=从dao.CurrentDBContext.Order中的q开始 从dao.CurrentDBContext.OrderGoodsDetail中的d 其中q.billNum==d.billNum 选择新的 { q

关于linq select语句中的数据类型转换,我遇到了一个令人头痛的问题,请如下所示,我想将下面一个字段的字符串类型hightlight转换为double类型,因此我利用convert.ToDouble方法来实现,但失败了。任何帮助或建议都将不胜感激

提前谢谢

var orders=从dao.CurrentDBContext.Order中的q开始 从dao.CurrentDBContext.OrderGoodsDetail中的d 其中q.billNum==d.billNum 选择新的 { q、 比尔纳姆, q、 订单来源, q、 sourceOddNum, q、 订单类型, q、 createdTime, q、 physicalNum, q、 店名, q、 按时付款, d、 规格代码, d、 规格名称, d、 颜色, d、 大小, d、 商品代码, d、 SKU, d、 标准销售价格, d、 薪酬, **StandardWeight=Convert.ToDoubled.StandardWeight,***//d.StandardWeight的日期类型是string,我想将其转换为double类型。 d、 采购编号 }; 你可以用let。请试试这个:

var orders = (from q in dao.CurrentDBContext.Order
                          from d in dao.CurrentDBContext.OrderGoodsDetail.ToList() // adding tolist()
                          let d.StandardWeight =Convert.ToDouble(d.StandardWeight);
                          where q.billNum == d.billNum
                          select new
                          {
                              q.billNum,
                              q.orderSource,
                              q.sourceOddNum,
                              q.orderType,
                              q.createdTime,
                              q.physicalNum,
                              q.ShopName,
                              q.pay_time,
                              d.SpecificationCode,
                              d.SpecificationName,
                              d.Color,
                              d.Size,
                              d.CommodityCode,
                              d.SKU,
                              d.StandardSellingPrice,
                              d.pay_ment,
                              (Double)d.StandardWeight,
                              d.PurchaseNumber
                          });
编辑:Aron的解决方案是正确的+1我曾这样使用过,现在请记住:

                           select new KaizensMinVM
                           {
                               ID = Kaizens.ID,
                               NAME = Kaizens.NAME,
                               KAIZEN_METHOD_ID =(decimal)Kaizens.KAIZEN_METHOD_ID//just use cast here

                           }; 

试着把那条线换成

StandardWeight = (Double)d.StandardWeight,
前面的代码不起作用的原因是EntityFramework*基本上不支持.net Framework方法

但是,它确实支持Expression.Cast操作,而C不支持


*EntityFramework的个人分支确实支持此操作,但我无法将其签入主线。

但是,它失败了,原因是什么?请包含完整的异常消息。LINQ to Entities无法识别“Double ParseSystem.String”方法,并且此方法无法转换为存储表达式。可能是重复的。感谢Alper的快速帮助,我按照您的方法尝试了它,但我们遇到了相同的异常。LINQ to Entities无法识别方法“Double-ToDoubleSystem.String”方法,此方法无法转换为存储表达式。请检查我的编辑,然后添加tolist我认为这可以解决此问题@Beyond8848,它根本不会更改您的LINQ表达式。感谢Alper,尽管我添加了tolist方法,它仍然不起作用。@AlperTungaArslan,请确认您是否使用EF的个人分支,对吗?据我们所知,大多数人几乎不可能分叉EF代码并添加一些代码来实现数据转换。问题是C编译器不支持您编写的代码。您可以使用Doubleobjectd.StandardWeight来填充它,但随后您将从EF中获得类似的运行时异常。@IvanStoev这是不幸的。解决这个问题的最简单方法是修复EF