我有一个“护理项目”列表,其中包含一个软删除框,一个ID,一个名称和一个类别。
目前,我正在查询所有信息! IsDeleted,并且在每个项目下都按适当的类别进行分组。
我现在正在对其进行更改,以便将IsDeleted的项目填充到“ Disabled Care Item”类别中。效果很好,但是“残疾人护理项目”显示在列表中的位置,该列表中有10-20个类别,每个类别中至少有几个项目。因此残疾人迷路了。我希望能够将禁用的类别和项目移动到列表的底部,但是每次尝试时,由于我将LINQing用于这些结果,因此我在列表之间隐式地出现了转换错误或针对IQueryable的错误。
我知道外面有一个聪明的人可以解决这个问题。
var query = CareItemFactory.Instance.GetByCareProgram(facilityId, careProgramId);
if (!includeDisabled)
{
query = query.Where(x => !x.IsDisabled && !x.CareItemCategory.IsDisabled);
}
return query.Select(i => new CareItemView
{
ID = i.ID,
Category = i.IsDisabled == true ? $"Disabled Care Items" : i.CareItemCategory.Name,
Name = i.Name
}).ToList();
答案 0 :(得分:0)
怎么样?
var query = CareItemFactory.Instance.GetByCareProgram(facilityId, careProgramId);
var resultQuery = query.Where(x => !x.IsDisabled && !x.CareItemCategory.IsDisabled)
.Select(i => new CareItemView
{
ID = i.ID,
Category = i.CareItemCategory.Name,
Name = i.Name
});
if (includeDisabled)
{
var resultQuery = resultQuery.Union(query.Where(x => x.IsDisabled || x.CareItemCategory.IsDisabled)
.Select(i => new CareItemView
{
ID = i.ID,
Category = $"Disabled Care Items",
Name = i.Name
}));
}
return resultQuery.ToList();