Я не уверен, насколько хорошо это будет работать с 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
на равенство?