.NET中基于指定字符串列表过滤移除DTO对象中数组元素的实现方法
你只需将原有单值匹配逻辑,替换为判断目标过滤字段是否存在任意元素属于移除名单即可,可借助LINQ的Any方法实现:
首先确保已经引入LINQ命名空间:
using System.Linq;
修改后的过滤代码如下:
// 移除filterOrder包含任意移除关键词的订单 lst.RemoveAll(x => x.filterOrder.Any(filterVal => removeList.Contains(filterVal))); // 移除每个订单下filterDetails包含任意移除关键词的详情项 lst.ForEach(fe => fe.Details.RemoveAll(r => r.filterDetails.Any(detailFilter => removeList.Contains(detailFilter))));
如果有忽略大小写匹配的需求,可以调整Contains方法的参数实现:
// 示例:忽略大小写匹配 lst.RemoveAll(x => x.filterOrder.Any(f => removeList.Contains(f, StringComparer.OrdinalIgnoreCase))); lst.ForEach(fe => fe.Details.RemoveAll(r => r.filterDetails.Any(f => removeList.Contains(f, StringComparer.OrdinalIgnoreCase))));
内容的提问来源于stack exchange,提问作者CrazyCoder
相关产品推荐
相关产品推荐

