Я пытаюсь получить дубликат из базы данных с помощью entity framework, но получаю исключение, ниже мой код
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);
}
этот код генерирует исключение в последней строке
Additional information: Impossible d'effectuer un cast d'un objet de type 'System.Data.Entity.Infrastructure.DbQuery
1[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 должен работать, чтобы получить только один результат.
Кто будет проверять null? FirstOrDefault даст null, если не найден
Я не думаю, что это будет компилироваться, поскольку выражение, которое вы передали в FirstOrDefault, не является Func<T,bool>.
Я его отредактировал. Я недостаточно внимательно присмотрелся. Теперь он должен работать.
Selectозначает, чтоfx_rateбудет типом вашего стола, вы хотелиFirst()?