七、SQLSugar 层级查询、拼接查询...

#region 层级查询
//获取树形数据,Country实体可以去看前面配置实体那篇文章
List<Country> country = db.Queryable<Country>().ToTree(t => t.CountryList, t => t.FPID, 0);
//获取是上级数据集
List<Country> country1 = db.Queryable<Country>().ToParentList(t => t.FPID, 1);
//获取子集
List<Country> country2 = db.Queryable<Country>().ToChildList(t => t.FPID, 1);
#endregion


#region 动态条件拼接查询
string key = "测试";//关键字

//以前的写法
//Expression<Func<Country, bool>> expression1 = s => true;
//if (!string.IsNullOrWhiteSpace(key))
//{
//    Expression<Func<Country, bool>> expression2 = s => s.FName.Contains(key);
//    Expression.Add(expression1, expression2);
//    ...
//}

Expressionable<Country> expressionable = Expressionable.Create<Country>();//实例化Expressionable
expressionable.AndIF(!string.IsNullOrWhiteSpace(key), c => c.FName.Contains(key));//添加条件
Expression<Func<Country, bool>> expression = expressionable.ToExpression();//将Expressionable转为Expression
db.Queryable<Country>().Where(expression);//
#endregion

#region 汇总查询
 dynamic d = await Task.Run(() => Db.Queryable<tSign>()
                .Where(expression)
                .Select((sign) => new
                {
                    FCreateDate = sign.FCreateDate.ToString(order),
                    FFakeVisitNum = sign.FFakeVisitNum == 0 ? sign.FVisitNum : sign.FFakeVisitNum,
                    sign.FVisitNum,
                }).MergeTable().GroupBy(g => new
                {
                    g.FCreateDate
                })
                .Select(t => new
                {
                    t.FCreateDate,
                    FFakeVisitNum = SqlFunc.AggregateSum(t.FFakeVisitNum),
                    FVisitNum = SqlFunc.AggregateSum(t.FVisitNum)
                }).OrderBy(t => t.FCreateDate).ToList());
#endregion

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值