您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 如何用lambda表达式 写任意条件组合的搜索语句呢

如何用lambda表达式 写任意条件组合的搜索语句呢

来源:网络整理     时间:2016/6/11 15:58:01     关键词:Lambda表达式

关于网友提出的“如何用lambda表达式 写任意条件组合的搜索语句呢”问题疑问,本网通过在网上对“如何用lambda表达式 写任意条件组合的搜索语句呢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:如何用lambda表达式 写任意条件组合的搜索语句呢
描述:

lambdaC#LINQ

如题
我有5个字段 a、 b、c、d、e。
我需要搜索满足条件 a=1的数据
list.Where(obj => obj.a==1)
有时候我需要同时满足b=2
list.Where(obj => obj.a==1 && obj.b==2)
我的问题是我需要随机组合不同搜索条件 的时候 我如何灵活的写搜索条件语句呢
比如有时我要a=1 b=2 d=4  有时我只要 c=3 e=5 如何写一个面向对象的搜索函数呢?

解决方案1:

以前收藏过~~


    public static class PredicateExtensions
    {
        public static Expression<>> True()
        {
            return f => true;
        }
        public static Expression<>> False()
        {
            return f => false;
        }
        public static Expression<>> Or(this Expression<>> expression1, Expression<>> expression2)
        {
            var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast());
            return Expression.Lambda<>>(Expression.Or(expression1.Body, invokedExpression), expression1.Parameters);
        }
        public static Expression<>> And(this Expression<>> expression1, Expression<>> expression2)
        {
            var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast());
            return Expression.Lambda<>>(Expression.And(expression1.Body, invokedExpression), expression1.Parameters);
        }
    }
解决方案2:

参考这个帖子:
LINQ - dynamic WHERE clause?
http://stackoverflow.com/questions/848415/linq-dynamic-where-clause

解决方案3:

自己定义一个函数
void listSelect(List list,obj a,string objName)
+4重载
void listSelect(List list,obj a,obj b,string objName1,string objName2)
...


以上介绍了“如何用lambda表达式 写任意条件组合的搜索语句呢”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1649771.html

相关图片

相关文章