Создание bool выражения Linq to SQL из выражения Int - PullRequest
3 голосов
/ 19 февраля 2011

В Linq to SQL у меня есть выражение, которое возвращает целое число, и я хочу сделать выражение на основе этого выражения, которое возвращает логическое значение.Int может использоваться для OrderBy(score), а логическое значение может использоваться для Where(ifScore).Я не могу понять, как использовать Score для определения ifScore, и был бы признателен за помощь.

Expression<Func<Model, int>> score = p =>
            (testList.Count() > 0 && p.Name.Contains(testList.FirstOrDefault()) ? 1 : 0);

Expression<Func<Model, bool>> ifScore = p =>
            //how to say if score > 2

1 Ответ

2 голосов
/ 19 февраля 2011

Я не уверен, насколько хорошо это будет работать с LINQ to SQL, но вы можете использовать Expression.GreaterThan, чтобы создать соответствующее двоичное выражение, и тогда это просто вопрос создания права Expression<TDelegate> из этого.

var body = Expression.GreaterThan(score.Body, Expression.Constant(2));
var ifScore = Expression.Lambda<Func<Model, bool>>(body, score.Parameters);

Окончательное выражение будет выглядеть примерно так:

p => (( testList.Count() > 0
        && p.Name.Contains(testList.FirstOrDefault()) ? 1 : 0 ) > 2

Конечно, это выглядит немного бессмысленно, потому что никогда не может быть правдой. Вы уверены, что намеревались сделать это? Возможно, вы действительно хотите сравнить его с 1 или 0 на равенство?

...