开发者

Linq expression that would always return true

I need to pass a parameter to a method that requires an Expressio开发者_Go百科n<Func<T, bool>>.

How to do I pass an expression that would always return true?

Using obj => true doesn't work because the framework complains at runtime that it cannot determine the memeber type from the True constant.


If you have a function like this

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

You should call it this way, specifying the T type :

TakeExpression<int>(_ => true)

It should work.


You need to define the parameter type you are passing:

(object o) => true 

Or

(int a) => true 


We can achieve the result as follows.

Consider context as your DbContext instance and Entity as your entity class name.

context.Entity.Where(t=> t.EntityID == t.EntityID);

By doing this the where clause will always return true and all the data will be shown.


There are two problems here:

1) If you're passing a predicate such that you always want to return true, then it's not much of a predicate. You may be able to omit whatever call you are trying to make.

2) If you want to just return true, you can simple use a more verbose lambda syntax to get what you want:

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

The more verbose syntax allows you to specify closer to an anonymous function while still being an expression.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜