始终返回 true 的 Linq 表达式

发布于 2024-10-28 02:49:30 字数 180 浏览 1 评论 0 原文

我需要将参数传递给需要 Expression> 的方法。

如何传递始终返回 true 的表达式?

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

I need to pass a parameter to a method that requires an Expression<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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

椵侞 2024-11-04 02:49:30

如果您有这样的函数,

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

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

TakeExpression<int>(_ => true)

它应该可以工作。

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.

不语却知心 2024-11-04 02:49:30

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

(object o) => true 

或者

(int a) => true 

You need to define the parameter type you are passing:

(object o) => true 

Or

(int a) => true 
时光沙漏 2024-11-04 02:49:30

我们可以实现如下结果。

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

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

通过这样做,where 子句将始终返回 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.

听,心雨的声音 2024-11-04 02:49:30

这里有两个问题:

1) 如果您传递的谓词总是希望返回 true,那么它就不是一个谓词。您也许可以忽略您想要拨打的任何电话。

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

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

更详细的语法允许你指定更接近匿名函数的值,同时仍然是一个表达式。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文