C# 无法隐式转换类型';系统Linq.IQueryable<;双倍?>';至';双倍';

C# 无法隐式转换类型';系统Linq.IQueryable<;双倍?>';至';双倍';,c#,type-conversion,nullable,C#,Type Conversion,Nullable,我试图使用实体框架从数据库中获取一个double,但我得到一个异常,下面是我的代码 public static double GetFxRate(DateTime dt) { DBEntities dbe = new DBEntities (); var fx_rate = dbe.MyTable .Where (s => s.Currency == "aaaaaaaaa" && s.Date == dt) .Select (s

我试图使用实体框架从数据库中获取一个double,但我得到一个异常,下面是我的代码

public static double GetFxRate(DateTime dt)    
{
  DBEntities dbe = new DBEntities ();
  var fx_rate = dbe.MyTable
       .Where (s => s.Currency == "aaaaaaaaa" && s.Date == dt)
       .Select (s => (s.ask + s.bid)/2);
  return Convert.ToDouble(fx_rate);
}
这段代码在最后一行生成一个异常

其他信息:不可能的“效应器取消类型转换”System.Data.Entity.Infrastructure.DbQuery
1[System.Nullable
1[System.Double]]“en type”System.IConvertible”

我怎样才能更正这个问题呢?

试试看

public static double GetFxRate(DateTime dt)    
{
  DBEntities dbe = new DBEntities ();
var fx_rate = dbe.MyTable.Where (s => s.Currency == "aaaaaaaaa" && s.Date == dt).Select( s => (s.ask + s.bid)/2).FirstOrDefault();
return Convert.ToDouble(fx_rate);
}

问题是
Select
返回一个
IQueryable
,这是所有可能的结果,但您只希望得到一个结果,因此
FirstOrDefault
应该只得到一个结果。

Select
意味着
fx\u rate
将成为表的类型,是否希望
First()
?你想得到什么?您已经选择了一个数值列表(整数?双精度?)。您是否特别想要其中一个值?平均值还是总和?谁将检查空值?FirstOrDefault如果找不到,则会给出null。我认为这不会编译,因为您传递给FirstOrDefault的表达式不是
Func
我已经编辑过了。我看得不够仔细。现在应该可以了。