如何替换表达式>进入 linq to sql 表达式的 where 子句

发布于 2024-11-03 11:00:09 字数 325 浏览 1 评论 0 原文

我想将以下谓词设置为以表达式语法编写的 linq 语句的 where 子句。

Expression<Func<Purchase, bool>> condition = p => p.Price > 100;

from purchase in dc.GetTable<Purchase>()
where condition
select ...

但是,编译器无法确定在哪里使用:IQuaryable<>或IEnumerable<>。 在不将 linq 表达式转换为方法链的情况下如何解决这个问题?

I would like to set the following predicate to where clause of linq statement written in expression syntax.

Expression<Func<Purchase, bool>> condition = p => p.Price > 100;

from purchase in dc.GetTable<Purchase>()
where condition
select ...

However, compiler cannot determine which Where to use: IQuaryable<> or IEnumerable<>.
How this problem could be solved without converting linq expression to method chains?

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

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

发布评论

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

评论(2

零崎曲识 2024-11-10 11:00:09

你不能像那样做where条件。您可以将条件合并到 where 子句 (where buy.Price>100) 中,或者在查询表达式中使用 Where(condition) 方法调用,就像

from purchase in dc.GetTable<Purchase>().Where(condition)
select ...

这样,您可以将它们组合起来。

You can't do where condition just like that. Either you incorporate the condition in the where clause (where purchase.Price>100) or use the Where(condition) method call inside the query expression, like

from purchase in dc.GetTable<Purchase>().Where(condition)
select ...

This is the way you can combine them.

西瑶 2024-11-10 11:00:09

尝试:

where condition.Compile()(purchase);

Try:

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