margaretC#条件拼接Expression<Func<T, bool>>的使⽤
使⽤代码
特别注意:拼接条件时,所使⽤到的条件strID,strBir必须是独⽴的
万众一心是什么意思var predicate = PredicateBuilder.GetTrue<Student>();
dpmipredicate = 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;
usnavy
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);
wildfire
}
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));
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);
星期一到星期日英文
}
climax}
}
}
到此这篇关于C#条件拼接Expression<Func<T, bool>>的使⽤的⽂章就介绍到这了,更多相关C#
条件拼接Expression<Func<T, bool>>内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!