我知道上面的主题有几篇帖子。但我仍然不清楚为什么我在以下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'`
答案 0 :(得分:0)
我刚刚尝试了以下内容,并且成功了。 fcost1为null,fcost2为1
,fcost3为null。那么也许它在你的背景下是什么?订单对象不是您认为的那样?
private void DoWork()
{
var orders = BuildOrders();
float? fCost1 = orders.Where(r => r.OrdID == 1).Select(t => t.cost).SingleOrDefault();
float? fCost2 = orders.Where(r => r.OrdID == 2).Select(t => t.cost).SingleOrDefault();
float? fCost3 = orders.Where(r => r.OrdID == 3).Select(t => t.cost).SingleOrDefault();
}
internal class Order
{
public int OrdID { get; set; }
public float? cost { get; set; }
}
private IEnumerable<Order> BuildOrders()
{
return new List<Order>
{
new Order
{
OrdID = 1,
cost = null
},
new Order
{
OrdID = 2,
cost = 1
}
};
}