我正在尝试使用实体框架从数据库获取双倍,但我得到一个例外,下面是我的代码
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'
我怎么能纠正这个?
答案 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
应该只能获得一个结果。