【发布时间】:2013-03-12 17:29:43
【问题描述】:
我正在使用 System.Linq.Expressions.Expression 类动态构建 SQL“WHERE”子句。它适用于简单的子句,例如要添加“PhaseCode = X”子句,我执行以下操作:
var equalTarget = Expression.Constant(phaseCode, typeof(int?));
var phaseEquals = Expression.Equal(Expression.PropertyOrField(projParam, "PhaseCode"), equalTarget);
但是,现在我正在尝试构建一个表达式,如果项目已分配给特定组,则该表达式将返回记录。项目和组具有多对多的关系。 如果没有表达式树,我会这样做:
db.Projects.Where(p => .... && p.GroupsAssigned.Any(g => g.ID == groupId))
但是,我似乎找不到使用 Expression 类来表达这一点的方法。 实际上有两件事我想不通:
- 如何遍历表之间的关系
- 如何做 x.Any()
非常感谢任何帮助。
【问题讨论】:
标签: c# expression-trees