排除包含另一个列表中的值的列表项

Posted

技术标签:

【中文标题】排除包含另一个列表中的值的列表项【英文标题】:Exclude list items that contain values from another list 【发布时间】:2012-06-29 18:29:39 【问题描述】:

有两个列表:

List<string> excluded = new List<string>()  ".pdf", ".jpg" ;
List<string> dataset = new List<string>() "valid string", "invalid string.pdf", "invalid string2.jpg","valid string 2.xml" ;

如何从“数据集”列表中过滤掉包含“排除”列表中的任何关键字的值?

【问题讨论】:

正如 abatishchev 所说,将 excluded 设为 HashSet&lt;string&gt;,尤其是在它很大的情况下。 谢谢。如果我们在 HashSets,我会给出这个链接来讨论这个主题:***.com/questions/1247442/… 【参考方案1】:
var results = dataset.Where(i => !excluded.Any(e => i.Contains(e)));

【讨论】:

在列表中找不到包含? @Choco: 使用 System.Linq; 我使用 system.Linq 添加但它不知道排除【参考方案2】:
// Contains four values.
int[] values1 =  1, 2, 3, 4 ;

// Contains three values (1 and 2 also found in values1).
int[] values2 =  1, 2, 5 ;

// Remove all values2 from values1.
var result = values1.Except(values2);

https://www.dotnetperls.com/except

【讨论】:

【参考方案3】:

试试:

var result = from s in dataset
             from e in excluded 
             where !s.Contains(e)
             select e;

【讨论】:

【参考方案4】:
var result=dataset.Where(x=>!excluded.Exists(y=>x.Contains(y)));

当排除列表为空时,这也有效。

【讨论】:

【参考方案5】:

var result = dataset.Where(x => !excluded.Contains(x));

【讨论】:

以上是关于排除包含另一个列表中的值的列表项的主要内容,如果未能解决你的问题,请参考以下文章

Excel - 如果单元格包含列表中的文本,则返回另一个单元格的值

如何将列表项的值插入 KivyMD 中的另一个屏幕

如何使用另一个Observable的值操作Observable中的项列表

Lambda排除包含字符串列表的值[重复]

单击列表视图项

检查列表是不是包含大于 C# 中的值的项目 [关闭]