【发布时间】:2019-04-16 11:13:45
【问题描述】:
我有一个这样构建的表达式树
Expression<Func<User, bool>> match = o =>
o.Name == viewModel.Name
&& orders.Contains(o.User.Company.CompanyId.ToString())
&& o.dept == viewModel.dept
我只想包含该行
o.dept == viewModel.dept
当 viewModel.dept 为 1、2 或 3 且表达式树中不包含此条件时,如果它是任何其他值。
此代码在一个函数中,该函数获取 viewModel 作为参数,并且 viewModel 中的值用于查询 EF 模型用户。
目前我有 2 个单独的表达式树来满足这种情况。有没有更好的解决办法?
谢谢
【问题讨论】:
-
单独的表达式,即单独的
Where()调用是的方法。弄乱表达式树会复杂得多,而且不会真正给您带来好处。 -
(viewModel.dept == 1 || viewModel.dept == 2 || viewModel.dept == 3) && o.dept == viewModel.dept不起作用? -
@taquion,很抱歉它没有用,我仍在使用 2 种不同的表达方式..
-
@poke,你能给我们举个例子吗.. 最后,我需要返回 Expression
>.. 干杯 类型的表达式
标签: c# entity-framework linq expression expression-trees