我有一个字符串数组:例如:
string [] names ={"P","A","B","G","F","K","R"}
我有另一个阵列:
string [] subnames={"P","G","O"}
我们如何检查names数组是否包含子数组数组的任何元素。
在上面的例子中,名字中有“P”和“G”。
答案 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));