递归查询第一例

该博客介绍了一种递归查询的方法,通过示例代码展示了如何在数据库中根据ParentId获取数据并进行分页处理。当找不到特定ParentId时,查询会终止。递归调用用于合并上级和当前层级的数据,最后返回包含所有层级信息的结果。

在这里插入图片描述 PagerDto listParent = new PagerDto();
int count = 0;
public PagerDto GetByParentId(string ParentId, int pageIndex, int pageSize, string schoolId)
{
//当在parentid下找不到传过来的id值时退出循环
int total = 0;
PagerDto list = new PagerDto();
string sql = @"SELECT * from v_leave_message where 1=1 ";
if (!string.IsNullOrEmpty(schoolId))
{
sql += “and SchoolId=’” + schoolId + "’ ";
}
if (!string.IsNullOrEmpty(ParentId))
{
sql += “and ParentId=’” + ParentId + "’ ";
}
if (count ==0)
{
string sqlParent = @"SELECT * from v_leave_message where 1=1 ";
if (!string.IsNullOrEmpty(schoolId))
{
sqlParent += “and SchoolId=’” + schoolId + "’ ";
}
if (!string.IsNullOrEmpty(ParentId))
{
sqlParent += “and Id=’” + ParentId + "’ ";
}
listParent.Data = Context.db.SqlQueryable(sqlParent).OrderBy(x => x.CreatedTime, SqlSugar.OrderByType.Desc).ToPageList(pageIndex, pageSize, ref total);
listParent.RecordTotal = total;
count++;
}
list.Data = Context.db.SqlQueryable(sql).OrderBy(x => x.CreatedTime, SqlSugar.OrderByType.Desc).ToPageList(pageIndex, pageSize, ref total);
list.RecordTotal = total;
if (total!=0)
{
var data = list;
ParentId = list.Data[0].Id;
listParent.Data.AddRange(data.Data);
return GetByParentId(ParentId, pageIndex, pageSize, schoolId);
}
else
{
return listParent;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無羁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值