如何在多个条件下构建Lambda表达式树

编程入门 行业动态 更新时间:2024-10-14 02:22:37
本文介绍了如何在多个条件下构建Lambda表达式树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

注意:我知道使用动态linq创建它非常简单,但是我想学习.

Note: I know it's much simple to create this using dynamic linq but I want to learn.

我想创建一个查找"的lambda:Name = David AND Age = 10.

I want to create a lambda that "finds": Name=David AND Age=10.

class Person { public int Age { get; set; } public string Name { get; set; } } var lambda = LabmdaExpression<Person>("Name", "David", "Age", 10); static Expression<Func<T, bool>> LabmdaExpression<T>(string property1, string value1, string property2, int value2) { ParameterExpression parameterExpression = Expression.Parameter(typeof(Person), "o"); MemberExpression memberExpression1 = Expression.PropertyOrField(parameterExpression, property1); MemberExpression memberExpression2 = Expression.PropertyOrField(parameterExpression, property2); ConstantExpression valueExpression1 = Expression.Constant(value1, typeof(string)); ConstantExpression valueExpression2 = Expression.Constant(value2, typeof(int)); BinaryExpression binaryExpression1 = Expression.Equal(memberExpression1, valueExpression1); BinaryExpression binaryExpression2 = Expression.Equal(memberExpression2, valueExpression2); var ret1 = Expression.Lambda<Func<T, bool>>(binaryExpression1, parameterExpression); var ret2 = Expression.Lambda<Func<T, bool>>(binaryExpression2, parameterExpression); }

推荐答案

Expression andExpression = Expression.AndAlso(binaryExpression1, binaryExpression2); return Expression.Lambda<Func<T, bool>>(andExpression , parameterExpression);

编辑-评论

您只需将所有表达式链接在一起

You just chain together all your expresions

所以为了得到这个表达式 X AND(Y OR(Z OR Q))

so in order to get this expression X AND (Y OR (Z OR Q))

Expression ZorQ = Expression.OrElse(zExp, qExp); Expression YorZorQ = Expression.OrElse(yExp, ZorQ); Expression XandYorZorQ = Expression.AndAlso(xExp, YorZorQ);

更多推荐

如何在多个条件下构建Lambda表达式树

本文发布于:2023-11-22 14:37:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617835.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   条件下   表达式   如何在   Lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!