Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ进行列表过滤_C#_.net_Linq - Fatal编程技术网

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));
        }