千家信息网

C#条件拼接的方法

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本文小编为大家详细介绍"C#条件拼接的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"C#条件拼接的方法"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用代码特别注意
千家信息网最后更新 2025年11月16日C#条件拼接的方法

本文小编为大家详细介绍"C#条件拼接的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"C#条件拼接的方法"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

使用代码

特别注意 :拼接条件时,所使用到的条件strID,strBir必须是独立的

var predicate = PredicateBuilder.GetTrue();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.Where(predicate).ToList();

工具类

using System;using System.Linq.Expressions;namespace WindowsFormsApp1.Tools{    public static class PredicateBuilder    {        public static Expression> GetTrue() { return f => true; }        public static Expression> GetFalse() { return f => false; }        public static Expression> And(this Expression> first, Expression> second)        {            return first.AndAlso(second, Expression.AndAlso);        }        public static Expression> Or(this Expression> first, Expression> second)        {            return first.AndAlso(second, Expression.OrElse);        }        private static Expression> AndAlso(this Expression> expr1, Expression> expr2, Func 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(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#条件拼接的方法"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0