我们如何检查一个数组是否包含#中另一个数组的一个或多个元素?

时间:2012-06-21 13:36:20

标签: c# .net

我有一个字符串数组:例如:

string [] names ={"P","A","B","G","F","K","R"}

我有另一个阵列:

string [] subnames={"P","G","O"}

我们如何检查names数组是否包含子数组数组的任何元素。

在上面的例子中,名字中​​有“P”和“G”。

8 个答案:

答案 0 :(得分:21)

这是一个Linq解决方案,可以满足您的需求:

names.Any(x => subnames.Contains(x))

答案 1 :(得分:10)

绝对最简单的方法是使用Enumerable.Intersect方法。然后我们在结果

上使用Any方法
bool containsValues = names.Intersect(subnames).Any();

答案 2 :(得分:6)

这也可以:

bool result = names.Any(subnames.Contains);

修改

此代码可能看起来不完整但实际上有效(方法组方法)。

答案 3 :(得分:3)

你可以使用一些Linq,然后使用Intersect

var commonNames = names.Intersect(subnames);

答案 4 :(得分:2)

检查是否:

bool anyInBoth = names.Intersect(subnames).Any();

要获得两者:

IEnumerable<string> inBoth = names.Intersect(subnames);

答案 5 :(得分:0)

Linq是我认为最简单的:

from n1 in names
join n2 in subnames on n1 equals n2
select n1;

答案 6 :(得分:0)

bool DiziIcindeDiziVarMi(string[] parent, string[] child)
{
     int say = 0;
     for (var i = 0; i < child.Length; i++)
        for (var j = 0; j < parent.Length; j++)
           if (child[i] == parent[j])
                say++;

        return say == child.Length;

}

答案 7 :(得分:0)

另一种方式:我分享了如何检查一个(几个)单词部分和全部

string[] subnames = { "P", "G", "O" };
    
bool all = subnames.All(s => names.Contains(s));
bool anyInBoth = subnames.All(s => names.Contains(s));