111,092
社区成员




public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
int age = 12;
//第一种写法
Say(c=>c.age==12)
//第二种写法
// Say(c=>c.age==age);
return View();
}
public void Say(Expression<Func<Person,bool>> where)
{
//这里取值
string hello = where.Body.ToString();
}
public ActionResult Login()
{
return View();
}
}
public class Person
{
public string Name { set; get; }
public int age { set; get; }
public string Gender { set; get; }
}
/*求大神赐教!100分如果不够可以追加*/
public void Say(Expression<Func<Form1, bool>> where)
{
//这里取值
//string hello = where.Body.ToString();
var exp = new MyExpressionVisitor().Visit(where) as LambdaExpression;
string hello = exp.Body.ToString(); // (c.age==12)
}
class MyExpressionVisitor : ExpressionVisitor
{
protected override Expression VisitMember(MemberExpression node)
{
if (node.Expression is ConstantExpression)
{
object obj = (node.Expression as ConstantExpression).Value;
if (node.Member is FieldInfo)
{
var value = (node.Member as FieldInfo).GetValue(obj);
return Expression.Constant(value, node.Type);
}
else if (node.Member is PropertyInfo)
{
var value = (node.Member as PropertyInfo).GetValue(obj);
return Expression.Constant(value, node.Type);
}
}
return base.VisitMember(node);
}
}