本文小编为大家详细介绍“C#条件拼接的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#条件拼接的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用代码特别注意 :拼接条件时,所使用到的条件strID,
本文小编为大家详细介绍“C#条件拼接的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#条件拼接的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
使用代码
特别注意 :拼接条件时,所使用到的条件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>> GetFalse<T>() { return f => false; } public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second) { return first.AndAlso<T>(second, Expression.AndAlso); } public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second) { return first.AndAlso<T>(second, Expression.OrElse); } 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 base.Visit(node); } } }}
读到这里,这篇“C#条件拼接的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。
--结束END--
本文标题: C#条件拼接的方法
本文链接: https://lsjlt.com/news/323040.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0