C# 选择浮点数据类型值时出现LINQ错误
我知道有几篇关于上述主题的帖子。但是我仍然不清楚为什么在下面的C# 选择浮点数据类型值时出现LINQ错误,c#,linq,asp.net-core,entity-framework-core,C#,Linq,Asp.net Core,Entity Framework Core,我知道有几篇关于上述主题的帖子。但是我仍然不清楚为什么在下面的LINQ查询中出现以下错误注意:在下面的查询中,我也尝试了var fCost=..,但仍然是完全相同的错误。 错误:无法强制转换类型为“System.Double”到类型为“System.Single”的对象 float? fCost = _context.Orders.Where(r => r.OrdID == 123).Select(t => t.cost).SingleOrDefault(); 型号: public
LINQ
查询中出现以下错误注意:在下面的查询中,我也尝试了var fCost=..
,但仍然是完全相同的错误。
错误:无法强制转换类型为“System.Double”到类型为“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'`
我只是尝试了以下方法,结果成功了。fcost1为空,fcost2为
1
,fcost3为空。那么也许这是你的背景下的事情?订单对象不是您认为的那样
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
}
};
}
private void DoWork()
{
var orders=BuildOrders();
float?fCost1=orders.Where(r=>r.OrdID==1).Select(t=>t.cost.SingleOrDefault();
float?fCost2=订单。其中(r=>r.OrdID==2)。选择(t=>t.cost)。SingleOrDefault();
float?fCost3=订单。其中(r=>r.OrdID==3)。选择(t=>t.cost)。SingleOrDefault();
}
内部类顺序
{
公共整数{get;set;}
公共浮动?成本{get;set;}
}
私有IEnumerable BuildOrders()
{
返回新列表
{
新秩序
{
ORDD=1,
成本=零
},
新秩序
{
ORDD=2,
成本=1
}
};
}
我刚刚尝试了以下方法,成功了。fcost1为空,fcost2为1
,fcost3为空。那么也许这是你的背景下的事情?订单对象不是您认为的那样
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
}
};
}
private void DoWork()
{
var orders=BuildOrders();
float?fCost1=orders.Where(r=>r.OrdID==1).Select(t=>t.cost.SingleOrDefault();
float?fCost2=订单。其中(r=>r.OrdID==2)。选择(t=>t.cost)。SingleOrDefault();
float?fCost3=订单。其中(r=>r.OrdID==3)。选择(t=>t.cost)。SingleOrDefault();
}
内部类顺序
{
公共整数{get;set;}
公共浮动?成本{get;set;}
}
私有IEnumerable BuildOrders()
{
返回新列表
{
新秩序
{
ORDD=1,
成本=零
},
新秩序
{
ORDD=2,
成本=1
}
};
}
发生了什么错误?另外SingleOrDefault
如果序列中有多个元素,此方法将引发异常。@我已在帖子中添加了错误消息。另外,如果序列中有多个元素,我认为错误不会是我描述的错误,对吗?如果您更改float?fcost
到var fcost
,fcost
的值是多少?那么每一步之后的空无余度呢?@Jonathan我没有达到那个点,因为错误发生在特定的行float?fCost=\u context.Orders……
是否使用浮点?fCost=..
或var fCost=..
。。我不清楚你问题的第二部分。我在上面的查询中也尝试了…Select(t=>t.cost??0).SingleOrDefault()
,但是对于空coalLesse,我的意思是类似\u context.Orders.Where(r=>r.OrdID==123)?。Select(t=>t.cost)?.SingleOrDefault()代码>错误是什么?另外SingleOrDefault
如果序列中有多个元素,此方法将引发异常。@我已在帖子中添加了错误消息。另外,如果序列中有多个元素,我认为错误不会是我描述的错误,对吗?如果您更改float?fcost
到var fcost
,fcost
的值是多少?那么每一步之后的空无余度呢?@Jonathan我没有达到那个点,因为错误发生在特定的行float?fCost=\u context.Orders……
是否使用浮点?fCost=..
或var fCost=..
。。我不清楚你问题的第二部分。我在上面的查询中也尝试了…Select(t=>t.cost??0).SingleOrDefault()
,但是对于空coalLesse,我的意思是类似\u context.Orders.Where(r=>r.OrdID==123)?。Select(t=>t.cost)?.SingleOrDefault()代码>您的示例有效。我需要更深入地研究我的代码或数据。你的例子很有效。我需要深入挖掘我的代码或数据。