在获取父数据的同时,我也获取了代码中显示的子数据,为了摆脱这一点,我使用了foreach循环,但是当db太大时,这不是一个好方法。请帮助
public async Task<DataSourceResult> GetAll(DataSourceRequest request)
{
var data = _unitOfWork.SchoolsRepository.GetAll().Where(x => x.IsDeleted == false)
.Include(x => x.SchoolBranches)
.ThenInclude(y => y.Classes)
.ToDataSourceResult(request);
List<Schools> result = (List<Schools>)data.Data;
if (result != null)
{
foreach (var item in result)
{
var schoolBranch = item.SchoolBranches.Where(x => !x.IsDeleted).ToList();
foreach (var _item in schoolBranch)
{
var _class = _item.Classes.Where(x=>!x.IsDeleted).ToList();
_item.Classes = _class;
}
item.SchoolBranches = schoolBranch;
}
data.Data = result;
return data;
}
else
{
throw new FriendlyExceptionHandler("No data found!", HttpStatusCode.BadRequest);
}
}
我希望他们的孩子的学校数据(父母)在数据库中没有被SoftDeleted清除。
答案 0 :(得分:1)
您可以尝试这个https://entityframework-plus.net/query-include-filter吗?
var data = _unitOfWork.SchoolsRepository.GetAll().Where(x => x.IsDeleted == false)
.IncludeFilter(x => x.SchoolBranches.Where(i => !i.IsDeleted))
.ThenInclude(y => y.Classes)
.ToDataSourceResult(request);