Linq表达总是会返回true

时间:2011-03-31 12:31:13

标签: c# .net linq expression-trees

我需要将参数传递给需要Expression<Func<T, bool>>的方法。

如何传递一个总是返回true的表达式?

使用obj => true不起作用,因为框架在运行时抱怨它无法从True常量确定memeber类型。

4 个答案:

答案 0 :(得分:11)

如果你有这样的功能

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

您应该这样调用它,指定T类型:

TakeExpression<int>(_ => true)

它应该有用。

答案 1 :(得分:1)

您需要定义要传递的参数类型:

(object o) => true 

或者

(int a) => true 

答案 2 :(得分:0)

我们可以达到以下结果。

context 作为DbContext实例,将 Entity 作为您的实体类名称。

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

这样做,where子句将始终返回true,并且将显示所有数据。

答案 3 :(得分:-1)

这里有两个问题:

1)如果你传递一个谓词,这样你总是想要返回true,那么它就不是一个谓词了。你可能可以省略你想要做的任何电话。

2)如果你想返回true,你可以简单地使用更详细的lambda语法来获得你想要的东西:

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

更详细的语法允许您在仍然是表达式的同时指定更接近匿名函数。