static void Main(string[] args)
{
List<Person> list = new List<Person>() {
new Person(){ Age=20, Name="wengyuli", Parts=new Part(){ Name="123"}},
new Person(){ Age=30, Name="chenyang", Parts=new Part(){ Name="123456"}},
new Person(){ Age=40, Name="heshuai", Parts=new Part(){ Name="123"}},
new Person(){ Age=50, Name="heyunlong", Parts=new Part(){ Name="123456"}}
};
var c = Expression.Parameter(typeof(Person), "m");
Expression condition = Expression.Constant(false);
Expression con = Expression.Call(
Expression.Property(c,typeof(Person).GetProperty("Name")),
typeof(string).GetMethod("StartsWith",new Type[]{typeof(string)}),
Expression.Constant("wengyuli"));
condition = Expression.Or(con, condition);
Expression<Func<Person, bool>> end = Expression.Lambda<Func<Person, bool>>(condition, new ParameterExpression[] { c });
}
class Person
{
public string Name { set; get; }
public int Age { set; get; }
public Part Parts { set; get; }
}
class Part
{
public string Name { set; get; }
}
}