Выражение Linq, которое всегда возвращает true - PullRequest
5 голосов
/ 31 марта 2011

Мне нужно передать параметр методу, который требует Expression<Func<T, bool>>.

Как мне передать выражение, которое всегда будет возвращать true?

Использование obj => true не работает, потому что во время выполнения фреймворк жалуется, что не может определить тип члена из константы True.

Ответы [ 3 ]

11 голосов
/ 31 марта 2011

Если у вас есть такая функция

void TakeExpression<T>(Expression<Func<T, bool>> expr)

Вы должны вызывать ее следующим образом, указав тип T:

TakeExpression<int>(_ => true)

Она должна работать.

1 голос
/ 31 марта 2011

Вам необходимо определить тип параметра, который вы передаете:

(object o) => true 

Или

(int a) => true 
0 голосов
/ 31 марта 2011

Здесь есть две проблемы:

1) Если вы передаете предикат так, что вы всегда хотите вернуть true, то это не так уж много предикатов.Вы можете пропустить любой звонок, который вы пытаетесь сделать.

2) Если вы хотите просто вернуть true, вы можете просто использовать более подробный лямбда-синтаксис, чтобы получить то, что вы хотите:

sample.AsQueryable().Where((x) => { return true; });

Более подробный синтаксис позволяет вам указать ближе канонимная функция, все еще будучи выражением.

...