C#条件拼接Expression<Func<T, bool>>的使⽤
子君和涓生使⽤代码
特别注意:拼接条件时,所使⽤到的条件strID,strBir必须是独⽴的
酱泡菜var predicate = PredicateBuilder.GetTrue<Student>();
predicate = predicate.And(it => it.id.ToString().Contains(strID));
predicate = predicate.And(it => it.Birthday.ToString().Contains(strBir));
predicate = predicate.And(it => it.Sex.ToString().Contains(strSex));
predicate = predicate.And(it => it.Age == 20);
var lst = db.Queryable<Student>.Where(predicate).ToList();
⼯具类
using System;
陆游字什么号什么using System.Linq.Expressions;
namespace WindowsFormsApp1.Tools
{
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> GetTrue<T>() { return f => true; }
public static Expression<Func<T, bool>> GetFal<T>() { return f => fal; }
public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> cond)
{
return first.AndAlso<T>(cond, Expression.AndAlso);
}
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> cond)
{
return first.AndAlso<T>(cond, Expression.OrEl);
}
private static Expression<Func<T, bool>> AndAlso<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2, Func<Expression, Expression, BinaryExpression> func) {
var parameter = Expression.Parameter(typeof(T));7月23日是什么星座
var leftVisitor = new ReplaceExpressionVisitor(expr1.Parameters[0], parameter);优秀员工评语
var left = leftVisitor.Visit(expr1.Body);
var rightVisitor = new ReplaceExpressionVisitor(expr2.Parameters[0], parameter);
var right = rightVisitor.Visit(expr2.Body);怎么给软件加密
return Expression.Lambda<Func<T, bool>>(
func(left, right), parameter);
}
private class ReplaceExpressionVisitor : ExpressionVisitor
{
private readonly Expression _oldValue;
private readonly Expression _newValue;
public ReplaceExpressionVisitor(Expression oldValue, Expression newValue)
{
牙疼吃什么水果好
_oldValue = oldValue;
_newValue = newValue;
}
public override Expression Visit(Expression node)
{
if (node == _oldValue)
return _newValue;
return ba.Visit(node);
}
}
}
祥的成语}
到此这篇关于C#条件拼接Expression<Func<T, bool>>的使⽤的⽂章就介绍到这了,更多相关C#
条件拼接Expression<Func<T, bool>>内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!