C# 通过列表c同时检查多个字符串#

C# 通过列表c同时检查多个字符串#,c#,arrays,list,linq,lambda,C#,Arrays,List,Linq,Lambda,我有一个列表,如下所示: ALIBABA - 5 PCS BAIDU - 4 PCS FACEBOOK - 1 PCS NIO - 2 PCS 我试图检查该列表是否包含特定字符串,然后获取字符串所在的整个元素。我在网上搜索了一下,发现了这个 var newList = listboxitems.Where(x => x.Contains("ALIBABA")).ToList(); 这让我感到: ALIBABA - 5 PCS 如何在一行中搜索具有更多关键字的更

我有一个列表,如下所示:

ALIBABA - 5 PCS
BAIDU - 4 PCS 
FACEBOOK - 1 PCS
NIO - 2 PCS
我试图检查该列表是否包含特定字符串,然后获取字符串所在的整个元素。我在网上搜索了一下,发现了这个

var newList = listboxitems.Where(x => x.Contains("ALIBABA")).ToList();

这让我感到:

ALIBABA - 5 PCS
如何在一行中搜索具有更多关键字的更多元素

这是什么

var newList = listboxitems.Where(x => x.Contains("ALIBABA", "BAIDU")).ToList();

因此,期望的输出是:

ALIBABA - 5 PCS
BAIDU - 4 PCS
“阿里巴巴”、“百度”
放入一个数组:

var-toCheck=new[]{“阿里巴巴”、“百度”}

然后在内部循环数组

listboxitems.Where(x=>toCheck.Any(check=>x.Contains(check))


不幸的是,由于您正在执行的是
包含
,因此无法使用
哈希集
来加速此操作,您可以创建一个关键字列表

string[] keyword = { "ALIBABA", "Don Box" };
var newList = listboxitems.Where(x => keyword.Contains(x)).ToList();

OP想检查
x
是否在任何地方包含关键字,但这不起作用