Добавьте два IQueryables (int / decimal) в C # - PullRequest
2 голосов
/ 18 ноября 2010

Я извлекаю два значения из базы данных MYSQL. У меня есть одно целое и одно десятичное ... как их добавить?

В настоящее время мой код:

orderTotal += cartItem.Count * storeDB.Designs.Select(p => p.Price);

// countItem.Count = int
// storeDB.select = decimal

Как мне добавить это? Я пробовал приведение типов в разные стороны. Любая помощь приветствуется!

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

.Select() возвращает коллекцию, которая не может быть приведена к операнду умножения, даже если она содержит только один элемент.Взгляните на FirstOrDefault() и его род, которые возвращают скаляры.

Если вы ожидаете более одного значения, вам нужно агрегировать Designs с чем-то вроде Sum() перед умножением результата.

2 голосов
/ 18 ноября 2010

Результат storeDB.Designs.Select(p => p.Price) не является десятичным.Это IEnumerable<decimal>.Ваша логика должна выглядеть примерно так:

 orderTotal += cartItem.Count * 
               storeDb.Designs.First(d => d.Id == cartItem.Id).Price;

Имейте в виду, что First выбросит, если в базе данных нет элемента с правильным идентификатором (cartItem.Id).

...