我正在使用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()
非常感谢您的任何帮助。
typeof(Queryable).GetMethods("Any").Single(mi => mi.GetParameters().Count() == 2);
而不是:typeof(Enumerable).GetMethods("Any").Single(mi => mi.GetParameters().Count() == 2);
- David Diez