如何获取移除指定Id元素后的列表?List.RemoveAll使用疑问
解决列表移除指定Id元素后获取目标列表的问题
嘿,我完全懂你的困扰!其实你可能误解了List.RemoveAll()的工作方式——它本身就是直接修改原列表的,返回的那个整数只是告诉你这次操作一共删掉了多少个元素,不是说它不修改列表哦。
举个实际的代码例子,假设你的对象结构是这样的:
public class MyDataObject { public int Id { get; set; } // 这里可以加其他你需要的属性 }
那你可以这么处理:
直接修改原列表(推荐,性能更好)
// 你的原始对象列表 List<MyDataObject> originalList = GetYourInitialList(); // 需要移除的Id集合 List<int> targetIds = new List<int> { 3, 6, 9 }; // 调用RemoveAll,它会原地删掉符合条件的元素 int removedItemCount = originalList.RemoveAll(item => targetIds.Contains(item.Id)); // 现在originalList就是已经移除目标元素后的列表了! // 那个removedItemCount只是告诉你删了多少个,不用管它也能拿到修改后的列表生成新列表(不修改原列表)
如果不想动原来的列表,想用一个全新的列表存结果,那可以用Linq的Where筛选后转成列表:List<MyDataObject> newFilteredList = originalList .Where(item => !targetIds.Contains(item.Id)) .ToList();注意这种方式要记得引用
System.Linq命名空间哦。
简单总结下:
- 用
RemoveAll的话,原列表就是修改后的结果,不用额外获取; - 要新列表就用Linq筛选,一步到位生成。
内容的提问来源于stack exchange,提问作者Connie DeCinko CS
相关产品推荐
相关产品推荐

