哪位高人指点一下,C#中两个动态lambda 表达式有什么办法合并成一个? 谢谢!

 我来答
阳光的雷咩咩
2014-12-20 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7855万
展开全部
    class Program
    {
        static void Main(string[] args)
        {
            C[] cs = new C[]{
            new C(11),new C(22),new C(33),
            new C(44),new C(55),new C(66)};

            Expression<Func<C, bool>> e1 = x => x.N > 20;
            Expression<Func<C, bool>> e2 = x => x.N < 50;

            Expression<Func<C, bool>> e3 = e1.AndAlso(e2);

            var re = cs.Where(e3.Compile()).ToArray();

            foreach (C c in re)
                Console.WriteLine(c.N);
            //22 33 44
            Console.ReadLine();
        }
    }

    //元素类型定义
    class C
    {
        public C(int n) { this.N = n; }
        public int N;
    }

    //扩展方法
    public static class Ext
    {
        public static Expression<Func<T, bool>> AndAlso<T>(
  this Expression<Func<T, bool>> a,
  Expression<Func<T, bool>> b)
        {
            var p = Expression.Parameter(typeof(T), "x");
            var bd = Expression.AndAlso(
                    Expression.Invoke(a, p),
                    Expression.Invoke(b, p));
            var ld = Expression.Lambda<Func<T, bool>>(bd, p);
            return ld;
        }
    }
玩转数据处理
2014-12-20 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
那两个呢??
追问
两个都是动态的,是两个类型为Expression>  类型的变量,现在要让其合并成一个。AND 运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式