使用LINQ进行列表过滤

本文关键字:列表 过滤 LINQ 使用 | 更新日期: 2023-09-27 17:58:51

所以我在代码中发现了这个方法:

private void FilterBasedUponPermission(List<Data.Indications.SpWeb_SavedIndications1LightDataObject> list)
        {
            list.RemoveAll(item =>
                (item.Permission == Controllers.Indications.ICConstants.TradeType_LLH && !isLLH) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_ALM && !isALM) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_RealEstate && !isRE) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_Auditor && !isAuditor));
        }

但是,在传入的列表中,一些permission值是null,并将它们保留在筛选列表中。我希望它删除同样没有权限集的项目,而不仅仅是那些与您作为用户所拥有的权限不匹配的项目。

谢谢!

使用LINQ进行列表过滤

只需添加一个项目。权限==空

list.RemoveAll(item => item.Permission == null ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_LLH && !isLLH) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_ALM && !isALM) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_RealEstate && !isRE) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_Auditor && !isAuditor));
private void FilterBasedUponPermission(List<Data.Indications.SpWeb_SavedIndications1LightDataObject> list)
        {
            list.RemoveAll(item =>
                (item.Permission == null) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_LLH && !isLLH) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_ALM && !isALM) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_RealEstate && !isRE) ||
                (item.Permission == Controllers.Indications.ICConstants.TradeType_Auditor && !isAuditor));
        }

这些都有效吗?

list.RemoveAll(item => !item.Permission.HasValue); // in case Permission is Nullable<T>
list.RemoveAll(item => item.Permission == null);

您可以在逻辑或(||)之后添加所有其他条件。

干杯,Matthias