Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# 选择浮点数据类型值时出现LINQ错误_C#_Linq_Asp.net Core_Entity Framework Core - Fatal编程技术网

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()您的示例有效。我需要更深入地研究我的代码或数据。你的例子很有效。我需要深入挖掘我的代码或数据。