如何使用LINQ筛选包含另一列表元素的字符串列表?
使用LINQ筛选包含任意筛选条件的列表项
你需要把Where里的判断逻辑改成检查当前字符串是否包含任意一个筛选条件列表里的元素,用LINQ的Any()方法就能轻松实现。
完整的正确代码:
var filteredList = models .Where(m => filterer.Any(f => m.Contains(f))) .Distinct() .ToList();
逻辑解释:
filterer.Any(f => m.Contains(f)):对于每个模型字符串m,遍历筛选条件列表filterer,只要存在任意一个条件f被m包含,这个表达式就返回true,对应的m就会被保留下来。Distinct():用来确保最终列表里没有重复项(如果你的原始models列表本身没有重复元素,这一步其实可以省略,但保留也不会有问题)。
用你的示例数据测试的话,"abcd1234"包含"cd"、"xycd9999"包含"cd"和"9999",这两个都会被筛选出来,结果就是["abcd1234", "xycd9999"],完全符合你的预期。
内容的提问来源于stack exchange,提问作者ehh
相关产品推荐
相关产品推荐

