无法将类型'System.Linq.IQueryable <double?>'隐式转换为'double'

时间:2018-06-13 16:20:36

标签: c# type-conversion nullable

我正在尝试使用实体框架从数据库获取双倍,但我得到一个例外,下面是我的代码

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);
}

此代码在最后一行生成异常

  

其他信息:Impossible d'effecter un cast d'un objet de type'System.Data.Entity.Infrastructure.DbQuery 1[System.Nullable 1 [System.Double]]'en type'System.IConvertible'

我怎么能纠正这个?

1 个答案:

答案 0 :(得分:-1)

尝试

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<Double>,这是所有可能的结果,但您只期望一个结果,因此FirstOrDefault应该只能获得一个结果。