Невозможно неявно преобразовать тип System.Linq.IQueryable <double?> В double

Я пытаюсь получить дубликат из базы данных с помощью 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.DbQuery1[System.Nullable1[System.Double]]' en type 'System.IConvertible'

Как я могу это исправить?

Select означает, что fx_rate будет типом вашего стола, вы хотели First()?
JSteward 13.06.2018 18:21

Что вы пытаетесь получить? Вы выбрали список числовых значений (целые? Двойные?). Вы хотите конкретно одну из этих ценностей? Среднее или суммирование?

Jonathon Chase 13.06.2018 18:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
402
1

Ответы 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 должен работать, чтобы получить только один результат.

Кто будет проверять null? FirstOrDefault даст null, если не найден

Dhaval Patel 13.06.2018 18:23

Я не думаю, что это будет компилироваться, поскольку выражение, которое вы передали в FirstOrDefault, не является Func<T,bool>.

Jonathon Chase 13.06.2018 18:23

Я его отредактировал. Я недостаточно внимательно присмотрелся. Теперь он должен работать.

kjr1995 13.06.2018 19:13

Другие вопросы по теме