关于网友提出的“如何用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