首页 新闻 会员 周边 捐助

linq查询,根据list<model>条件。

0
[已解决问题] 解决于 2018-09-27 12:08
items=[{

  code="123",name="小红",

  code="122",name="小蓝",

  code="121",name="小绿",

}];

table查询满足items的数据,table有对应的code,name字段

你猜丶的主页 你猜丶 | 初学一级 | 园豆:135
提问于:2018-09-13 18:17
< >
分享
最佳答案
0
    public static class PredicateBuilder
    {
        public static Expression<Func<T, bool>> True<T>() { return f => true; }
        public static Expression<Func<T, bool>> False<T>() { return f => false; }

        public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2)
        {
            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
            return Expression.Lambda<Func<T, bool>>
                  (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters);
        }

        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2)
        {
            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
            return Expression.Lambda<Func<T, bool>>
                  (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
        }

        public static Predicate<T> ConvertToPredicate<T>(this Func<T, bool> func)
        {
            return new Predicate<T>(func);
        }
    }
    var pre = PredicateBuilder.False<Item>();

            foreach (var cd in catalogs)
            {
                var cataPre = PredicateBuilder.True<Item>();
                if (!string.IsNullOrWhiteSpace(cd.BrandCd))
                {
                    cataPre = cataPre.And((item) => item.BrandCd == cd.BrandCd);
                }
                if (!string.IsNullOrWhiteSpace(cd.NameCd))
                {
                    cataPre = cataPre.And((item) => item.NameCd == cd.NameCd);
                }
                pre = pre.Or(cataPre);
            }
//true拼接and,false拼接or
你猜丶 | 初学一级 |园豆:135 | 2018-09-27 12:07
其他回答(1)
0

上个问题回复了,你看看行不行

华临天下 | 园豆:1501 (小虾三级) | 2018-09-14 09:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册