C#LINQ在单次执行中从列表中删除多个对象

时间:2017-06-20 10:32:46

标签: c# .net linq interface

看起来很相似,但我的问题却完全不同了。我有一个列表,其中包含实现不同接口的对象。 我想删除特定类型的对象,但是在传递了另一个标准之后。下面给出了示例代码。

 // remove the not required parameters 
foreach (EndPoint endPoint in endPoints)
{                 
    var maps = endPoint.EndPointParameters
        .Where(x => x is IEndPointParamMapCustom)
        .Cast<IEndPointParamMapCustom>()
        .Where(x => !x.IsActive)
        .ToList();

    foreach (var custom in maps)
    {
        endPoint.EndPointParameters.Remove(custom);
    }
}

我想删除下面的foreach循环并删除上面单个LINQ查询中的对象。可能吗? 谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用RemoveRange功能 endPoint.endPointParameters.RemoveRange(maps)

答案 1 :(得分:1)

如果EndPointParametersList<T>(&#34;从列表中移除多个对象&#34;),您可以尝试RemoveAll而不是< EM> LINQ的:

// Remove the not required parameters 
foreach (EndPoint endPoint in endPoints)
{ 
    // Remove all items from EndPointParameters that both
    //   1. Implement IEndPointParamMapCustom 
    //   2. Not IsActive 
    endPoint
      .EndPointParameters                
      .RemoveAll(item => (item as IEndPointParamMapCustom)?.IsActive == false);
}