最近在coding过程中,遇到了这样了一个问题,有一个List<T>类型数据集,根据业务需求需要在这个数据集中移除所有在另一个同类型的数据集中存在过的数据,即:移除A集合中在B集合中存在过的数据,获得A与B的差集。在MSDN查询资料的时候,发现C#提供了一个 List<T>.RemoveAll(Predicate<T>) 的方法,利用委托实现很是方便
实现代码如下:
List< Department> deptList = BLL_Department.GetDepartmentList("TypeId=6"); //获得集合A数据 deptList.RemoveAll(ContainItmes);//加载移除委托事件 private bool ContainItmes(Department depart) { List<HelpStandard > listHelpStandard = BLL_HelpStandard.GetListHelpStandard("");//得到所有待移除的数据集合B return listHelpStandard.FindAll(item => item.HelpTypeId == depart.Id).Count != 0; //如果传入数据项在集合B中,返回True }
MSDN对应链接地址:https://msdn.microsoft.com/zh-cn/library/wdka673a.aspx
时间: 2024-10-05 05:07:43