始终返回 true 的 Linq 表达式
我需要将参数传递给需要 Expression
的方法。
如何传递始终返回 true
的表达式?
使用 obj => true 不起作用,因为框架在运行时抱怨它无法从 True 常量确定成员类型。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要将参数传递给需要 Expression
的方法。
如何传递始终返回 true
的表达式?
使用 obj => true 不起作用,因为框架在运行时抱怨它无法从 True 常量确定成员类型。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
如果您有这样的函数,
您应该这样调用它,并指定 T 类型:
它应该可以工作。
If you have a function like this
You should call it this way, specifying the T type :
It should work.
您需要定义要传递的参数类型:
或者
You need to define the parameter type you are passing:
Or
我们可以实现如下结果。
将 context 视为您的 DbContext 实例,将 Entity 视为您的实体类名称。
通过这样做,where 子句将始终返回 true,并且将显示所有数据。
We can achieve the result as follows.
Consider context as your DbContext instance and Entity as your entity class name.
By doing this the where clause will always return true and all the data will be shown.
这里有两个问题:
1) 如果您传递的谓词总是希望返回 true,那么它就不是一个谓词。您也许可以忽略您想要拨打的任何电话。
2) 如果你只想返回 true,你可以简单地使用更详细的 lambda 语法来得到你想要的:
更详细的语法允许你指定更接近匿名函数的值,同时仍然是一个表达式。
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:
The more verbose syntax allows you to specify closer to an anonymous function while still being an expression.