使用LINQ方法语法筛选两个List<string>中的目标元素
使用LINQ方法语法筛选不包含指定元素的列表项
没问题,这事儿用LINQ的方法语法就能轻松搞定,核心思路是用Where过滤列表,结合All来判断当前项是否不包含partialMessagesList中的任何元素。
先看完整的代码实现:
var fullMessagesList = new List<string>(){ "This is Apple", "This is mango", "This is a Lemon", "This is a Orange" }; var partialMessagesList = new List<string>(){ "Apple", "mango" }; // LINQ方法语法实现筛选 var filteredList = fullMessagesList .Where(fullMsg => partialMessagesList.All(partialMsg => !fullMsg.Contains(partialMsg))) .ToList(); // 验证结果 foreach (var item in filteredList) { Console.WriteLine(item); } // 输出: // This is a Lemon // This is a Orange
代码解释:
Where(fullMsg => ...):遍历fullMessagesList中的每一项,记作fullMsgpartialMessagesList.All(partialMsg => !fullMsg.Contains(partialMsg)):判断当前的fullMsg是否不包含partialMessagesList里的任何一个元素——All方法会检查集合中所有元素都满足指定条件,这里的条件就是fullMsg不包含当前遍历到的partialMsg- 最后用
ToList()把筛选后的结果转换成List<string>类型
这样就完美替代了foreach循环的逻辑,代码更简洁可读性也更强~
内容的提问来源于stack exchange,提问作者Mysterious Jack
相关产品推荐
相关产品推荐

