C# Expression 创建Lambda表达式树如何嵌套

写代码的相声演员 2017-05-03 05:00:38
现在有两个类

public class UserGroup{
public string GroupName{get;set;}
public ICollection<User> Users{get;set;}
}

public class User{
public string UserName{get;set;}
public string Password{get;set;}
public string showName{get;set;}
}


现在需要Expression的静态方法创建以下两个树

Expression<Func<User,bool>> exp1 = a => a.UserName == "test" && a.Password == "123456";
Expression<Func<UserGroup,bool>> exp2 = a => a.GroupName.StartsWith("Group") && a.Users.Any(b => b.UserName == "test" && b.Password == "123456");


问题主要是第二个里的a.Users.Any的Any怎么处理?
...全文
363 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
第一个我自己做出来了

ParameterExpression a = Expression.Parameter(typeof(User), "a");
var exp1 = Expression.Equal(Expression.Property(a, "UserName"),Expression.Constant("test"));
var exp2 = Expression.Equal(Expression.Property(a, "Password "),Expression.Constant("123456"));
var result = Expression.Lambda<Func<User,bool>>(Expression.AndAlso(exp1,exp2), a)
不知道这么写对不对。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧