我们可以从 linq 表达式中删除子句吗?

发布于 2024-10-20 04:51:25 字数 200 浏览 9 评论 0原文

我想知道是否可以从 linq 表达式/查询运算符添加/删除 where 子句。

例如:-

var qry = from e in emp where(e => e.salary > 5000) select e;

是否可以在稍后阶段删除 where 表达式?

提前致谢 :)

I was wondering whether it's possible to add/remove a where clause from a linq expression/ query operators.

Eg :-

var qry = from e in emp where(e => e.salary > 5000) select e;

Is it possible to remove where expression at a later stage?

Thanks in advance :)

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

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

发布评论

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

评论(5

咿呀咿呀哟 2024-10-27 04:51:25

是的,这是可能的,但您需要实现一个 ExpressionVisitor 类来计算复合表达式并根据您的需要更改它。除非您正在做一些相对复杂的事情,否则可能有更好的方法来完成您想要的事情。

Yes, it is possible, but you need to implement an ExpressionVisitor class to evaluate the composite expression and change it according to your needs. Unless you are doing something relatively complex there is probably a better way to accomplish what you want.

鱼忆七猫命九 2024-10-27 04:51:25

据我所知,您只能调整您的过滤,

例如是否尝试根据条件 e.salary > 删除5000,你应该尝试类似的东西

var diffQry = from e in emp where(e => e.salary <= 5000) select e;

you can only adjust your filtering as far as i know

for example if are trying to delete based on condition e.salary > 5000 , they you should try something like

var diffQry = from e in emp where(e => e.salary <= 5000) select e;
橪书 2024-10-27 04:51:25

如果您想以编程方式添加和删除 where 子句,您可以使用查询运算符。

var query = emp.Select(x => x);

if (someCondition)
  query = query.Where(x => x.Price > 50);

您需要进一步扩展您的问题。

If you want to programmatically add and remove where clauses you can use query operators.

var query = emp.Select(x => x);

if (someCondition)
  query = query.Where(x => x.Price > 50);

You need to expand on your question a little more.

你又不是我 2024-10-27 04:51:25

如果 qryIQueryable< /code>- 例如,LINQ-to-SQL 或 LINQ-to-Entities 查询 - 那么应该可以分析底层表达式树并构建一个不包括 Where< 的新表达式树/代码> 子句。

如果 qry 是普通的 IEnumerable- 例如,LINQ-to-Objects 查询 - 那么这是无法完成的,因为没有表达式树可供分析。

If qry is an IQueryable<T> -- for example, a LINQ-to-SQL or LINQ-to-Entities query -- then it should be possible to analyse the underlying expression tree and build a new one excluding the Where clause.

If qry is a plain IEnumerable<T> -- for example, a LINQ-to-Objects query -- then this can't be done since there will be no expression tree to analyse.

深居我梦 2024-10-27 04:51:25

我认为如果有条件查询,则需要 WHERE 子句。否则(如果没有条件)您可以使用:

var qry = from e in emp select e;

I think WHERE clause is required if there is a conditional query. Otherwise (if no condition) you can use:

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