LINQ技术问题:如何用数组替代多Where子句实现过滤
用filters数组简化LINQ过滤查询
你可以直接利用数组的Contains方法结合取反操作,替代重复的Where子句,让代码更简洁易维护:
方法一:使用查询表达式
string[] filters = new string[]{"a","b","c","d"}; var filtered = from n in bigList where !filters.Contains(n) select n;
方法二:使用方法链式调用
如果你习惯LINQ的方法式写法,也可以这样实现:
string[] filters = new string[]{"a","b","c","d"}; var filtered = bigList.Where(n => !filters.Contains(n));
扩展:忽略大小写的过滤
如果需要忽略字符串大小写进行匹配,可以给Contains方法传入比较器参数:
// 查询表达式写法 var filtered = from n in bigList where !filters.Contains(n, StringComparer.OrdinalIgnoreCase) select n; // 方法链式写法 var filtered = bigList.Where(n => !filters.Contains(n, StringComparer.OrdinalIgnoreCase));
内容的提问来源于stack exchange,提问作者Marlon Davies
相关产品推荐
相关产品推荐

