我正在尝试使用实体框架从数据库中获取双精度,但我得到一个异常,下面是我的代码
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.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<Double>
,这是所有可能的结果,但你只期望一个结果,所以FirstOrDefault
应该只得到一个结果。