这应该很简单,但LINQ的Contains()不接受数组。 我有2个字符串数组
例如{“The”,“quick”,“Brown”}
我想比较另一个字符串数组,如果出现任何字符串,则返回true。
例如{“这”,“不”,“快”,“工作”}
所以“快速”出现在第二个阵列中。
最好将第一个字符串加入逗号分隔,这样看起来像“The,quick,Brown”然后运行包含在一个循环中吗?
我确信这可以使用LINQ正确完成。
答案 0 :(得分:6)
bool exists = first.Intersect(second).Any();
或者,如果你想知道实际上常见的词是什么:
var commonWords = first.Intersect(second);
foreach (string s in commonWords)
{
Console.WriteLine(s);
}
答案 1 :(得分:2)
var first = new[] {"the", "quick", "brown"};
var second = new[] {"This","doesnt","quick","Work"};
var found = from a in first
from b in second
where a == b
select a;
if(found.Any())
return true;
答案 2 :(得分:0)
我想我会用:
var query = from a in first
where b.Contains(a)
select a;
var isThereAMatch = query.Any();
如果列表非常大并且匹配可能很稀疏,那么我可以通过使用b的lookup / hashset来优化它。