Sqlsugar语句当查询条件为空时默认查询全部数据,不为空是则按照条件进行查询

需求描识:当我们查询时,要根据前端传的参数字段是否为空来查询,字段为空则返回全部,不为空则只返回匹配的参数

sqlsugar官方文档写的挺详细的了,也可以去看看,下面我也只是加了一些注释方便理解
直接上代码,下面我们定义了一个查询构造器,OrIF的意思也就是表面意思,if如果为真则加上or语句,第一个参数则是判断字段是否为空,为空则返回false,后面的查询语句也就不生效。

 var exp = Expressionable.Create<Tags>();    //查询构造器
exp.OrIF(id.HasValue, it => it.Id == id);           //id为空时则不需要判断,返回全部数据
exp.AndIF(!string.IsNullOrWhiteSpace(tagname), it => it.TagName.Contains(tagname!));   //tagname为空时则不需要后面的判断
 tags = await DbScoped.SugarScope.Queryable<Tags>().Where(exp.ToExpression()).ToListAsync();

我们也可以这样写

  var tags = await DbScoped.SugarScope.Queryable<Tags>().Where(
                Expressionable.Create<Tags>().
                OrIF(id.HasValue, it => it.Id == id)
                .AndIF(!string.IsNullOrWhiteSpace(tagname), it => it.TagName.Contains(tagname!))
                .ToExpression()
                ).ToListAsync();

猜你喜欢

转载自blog.csdn.net/weixin_44442366/article/details/126325789