LINQ Условное вычисление суммы - не может быть применено к операндам типа 'int' и 'bool' - PullRequest
1 голос
/ 11 сентября 2010

Я пытаюсь выполнить расчет.У меня есть таблица пожертвований (d), в которой содержится необходимое количество (d.QtyNeeded), и мне нужно определить количество необходимых предметов, извлекая заполненное количество (qtyfilled) из таблицы доноров.Не у каждого пожертвования есть донор, поэтому мне нужно условное выражение для обработки нулей, чтобы сумма работала.Когда я пытаюсь скомпилировать, я получаю сообщение об ошибке: * Оператор '-' не может быть применен к операндам типа 'int' и 'bool'.Я не очень хорош в Linq, что мне не хватает или есть лучший способ?

QtyOpen = d.QtyNeeded - (from dv in db.Donors
                                    select dv).All(v => v.QtyFilled == null)
                                    ? 0
                                    : (from dv in db.Donations
                                       select dv.QtyFilled).Sum()

Ответы [ 2 ]

0 голосов
/ 11 сентября 2010

Попробуйте отфильтровать нули в пределах начального выбора, добавив где в выборке:

QtyOpen = d.QtyNeeded - (from dv in db.Donors 
                         where dv.QtyFilled != null
                         select dv.QtyFilled).Sum();
0 голосов
/ 11 сентября 2010

Проблема не в выражении LINQ, а в приоритете оператора вычитания.Рассмотрим следующий пример:

int result = quantity - true ? 0 : otherValue;

Не удается скомпилировать по той же самой причине, Оператор '-' нельзя применить к операндам типа 'int' и 'bool' .Решение состоит в том, чтобы просто сгруппировать условный оператор в паренах:

int result = quantity - (true ? 0 : otherValue);

Итак, ваш пример должен компилироваться, добавляя парены вокруг всего вашего оператора условного оператора.

...