将Dropdown DataFieldCategory移至列表底部

时间:2018-07-25 19:31:04

标签: c# list linq drop-down-menu

我有一个“护理项目”列表,其中包含一个软删除框,一个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();

1 个答案:

答案 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();