无法将类型"System.Linq.IQueryable<double?>"隐式转换为"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);
}

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

附加信息: Impossible d'effectuer un cast d'un objet de type 'System.Data.Entity.Infrastructure.DbQuery1[System.Nullable1[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<Double>,这是所有可能的结果,但你只期望一个结果,所以FirstOrDefault应该只得到一个结果。

最新更新