C# 使用LINQ进行列表过滤
所以我在代码中遇到了这个方法:C# 使用LINQ进行列表过滤,c#,.net,linq,C#,.net,Linq,所以我在代码中遇到了这个方法: private void FilterBasedUponPermission(List<Data.Indications.SpWeb_SavedIndications1LightDataObject> list) { list.RemoveAll(item => (item.Permission == Controllers.Indications.ICConstants.T
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));
}
private void filterbasedupon权限(列表)
{
list.RemoveAll(项=>
(item.Permission==Controllers.Indications.ICConstants.TradeType_LLH&&!isLLH)||
(item.Permission==Controllers.Indications.ICConstants.TradeType_ALM&&!isALM)||
(item.Permission==Controllers.Indications.ICConstants.TradeType_realstate&&!isRE)||
(item.Permission==Controllers.Indications.ICConstants.TradeType_Auditor&!isAuditor));
}
但是,在传入的列表中,一些权限
值为null
,并且它将它们保留在筛选列表中。我希望它删除那些也没有权限集的项目,而不仅仅是那些与您作为用户拥有的权限不匹配的项目
谢谢 只需添加一项。权限==null
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);
list.RemoveAll(item=>!item.Permission.HasValue);//以防权限为空
list.RemoveAll(item=>item.Permission==null);
您可以在逻辑or(| |
)之后添加所有其他条件
干杯,
Matthias私有无效过滤器seduponpermission(列表)
{
list.RemoveAll(项=>
(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_realstate&&!isRE)||
(item.Permission==Controllers.Indications.ICConstants.TradeType_Auditor&!isAuditor));
}
您是否意识到第二行也适用于空值?因此,您不需要以不同的方式对待它们。而且,您似乎在做与要求相反的事情。list.RemoveAll(item=>item.Permission!=null)代码>将删除所有有效的列表项。ಠ_ಠ谢谢,你是对的,我弄错了。更正。雷,这是真的,我两种方式都发了,这样斯兰道就可以选择他喜欢哪一种了。谢谢!LINQ是如此简单,但由于我从未使用过它,简单的事情仍然让我困惑=/
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));
}