首页 新闻 搜索 专区 学院

Lambda表达式解析的问题,请高手看看

0
悬赏园豆:50 [待解决问题]
List<string> list = new List<string>();
list.Add("EEEEE");
list.Add("FFFF");
entity.Where(a => list.Contains(a.IP));

---------------------------------------------------------------
public static T Where<T>(this T entity, Expression<Func<T, bool>> func) where T : BaseEntity
        {

            MethodCallExpression me = (MethodCallExpression)func.Body;
            MethodInfo methodInfo = me.Method;
            if (methodInfo != null && methodInfo.Name == "Contains")
            {
                ReadOnlyCollection<Expression> Arguments = me.Arguments;
                if (Arguments != null && Arguments.Count == 1)
                {
                    MemberExpression mp = (MemberExpression)Arguments[0];
                    MemberExpression mo = (MemberExpression)me.Object;
                    ConstantExpression ce = (ConstantExpression)mo.Expression;
                    Params<string, ECondition, object[]> param = new Params<string, ECondition, object[]>();
                    param.Item1 = mp.Member.Name;
                    param.Item2 = ECondition.Like;
                    param.Item3 = new object[] { };
                }
            }
            return entity;
  
}

我现在想用表达式解析到List集合中的值,我在debug模式中看到了 变量ce.Value 中List的值,我怎么获取得到转化为List<string> 类型,我使用强制转化报错。 这里是不是需要使用表达式来获取这个值,具体怎么获取,希望高手帮忙解答一下!

 

博客周的主页 博客周 | 初学一级 | 园豆:152
提问于:2014-07-29 09:07
< >
分享
所有回答(1)
0

反射可以拿到值:

var constantExpression = ((ConstantExpression)mo.Expression);
                    var value = constantExpression.Value;
                    var type = value.GetType().GetField("list");
                    //List就是需要的值
                    var list = type.GetValue(value) as List<string>;
幻天芒 | 园豆:36781 (高人七级) | 2014-07-29 11:44

不反射可以么???

支持(0) 反对(0) 博客周 | 园豆:152 (初学一级) | 2014-07-31 22:17

@博客周: 额...我暂时就知道这个方法...

支持(0) 反对(0) 幻天芒 | 园豆:36781 (高人七级) | 2014-07-31 23:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册