【发布时间】:2017-06-16 22:46:43
【问题描述】:
我知道有几篇关于上述主题的帖子。但我仍然不清楚为什么我在以下LINQ 查询中收到以下错误。 注意:在以下查询中,我也尝试了var fCost = ....,但仍然出现完全相同的错误。
错误:Unable to cast object of type 'System.Double' to type 'System.Single'
float? fCost = _context.Orders.Where(r => r.OrdID == 123).Select(t => t.cost).SingleOrDefault();
型号:
public class Order
{
public int OrdID { get; set; }
public float? cost{ get; set; }
....
....
}
更新:
上面的错误信息有错别字,而不是'System.String'应该是'System.Single' 错误信息如下。这个错误一直存在:
Unable to cast object of type `'System.Double' to type 'System.Single'`
【问题讨论】:
-
错误是什么?还有
SingleOrDefault如果序列中有多个元素,这个方法会抛出异常。 -
@OrthoHomeDefense 我在帖子中添加了错误消息。另外,如果序列中有多个元素,我认为错误不会是我描述的错误,对吗?
-
如果你把
float? fcost改成var fcost,fcost的值是多少?以及每一步之后的空合并呢? -
@Jonathan 我没有达到这一点,因为错误发生在该特定行
float? fCost = _context.Orders......是否我使用float? fCost =....或var fCost =...... 我不清楚你的第二部分题。我在上面的查询中也试过....Select(t =>t.cost ?? 0).SingleOrDefault(),但同样的错误 -
对于空合并我的意思是像
_context.Orders.Where(r => r.OrdID == 123)?.Select(t => t.cost)?.SingleOrDefault();
标签: c# linq asp.net-core entity-framework-core