Есть ли функция, аналогичная Math.Max ​​для Entity Framework? - PullRequest
3 голосов
/ 15 апреля 2010

У меня есть запрос каркаса сущности следующим образом;

From T In Db.MyTable
Where (T.Col1 - T.Col2) + T.Col3 - T.Col4 > 0 _
Select T

Теперь мне нужно убедиться, что часть в скобках '(T.Col1 - T.Col2)' не опустится ниже нуля.

В .Net я бы кодировал его следующим образом (но, очевидно, EF не нравится Math.Max).

From T In Db.MyTable
Where Math.Max(T.Col1 - T.Col2,0) + T.Col3 - T.Col4 > 0 _
Select T

Есть ли простой способ сделать это? Я использую EF 2.0 (не последняя, ​​только что выпущенная версия).

Заранее спасибо

1 Ответ

2 голосов
/ 15 апреля 2010

Max не поддерживается, но Abs равно ; это будет делать? В противном случае вам придется использовать троичное выражение. В C # я бы сделал:

from t in Db.MyTable
let m = t.Col1 >= t.Col2 ? t.Col1 - t.Col2 : 0
where m + t.Col3 - t.Col4 > 0

Однако , это будет неэффективно на уровне БД, если у вас нет индекса выражения. Поэтому я бы предложил вместо этого вычисляемый столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...