检查数组中的字符串是否出现在LINQ中的另一个字符串数组中?

时间:2011-03-22 12:10:14

标签: linq

这应该很简单,但LINQ的Contains()不接受数组。 我有2个字符串数组

例如{“The”,“quick”,“Brown”}

我想比较另一个字符串数组,如果出现任何字符串,则返回true。

例如{“这”,“不”,“快”,“工作”}

所以“快速”出现在第二个阵列中。

最好将第一个字符串加入逗号分隔,这样看起来像“The,quick,Brown”然后运行包含在一个循环中吗?

我确信这可以使用LINQ正确完成。

3 个答案:

答案 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来优化它。