我有一个字符串数组:例如:
string [] names ={"P","A","B","G","F","K","R"}
我有另一个数组:
string [] subnames={"P","G","O"}
我们如何检查名称数组是否包含子名称数组的任何元素。
在上面的示例中,名称中有“P”和“G”。
这是一个 Linq 解决方案,应该可以满足您的需求:
names.Any(x => subnames.Contains(x))
最简单的方法是使用Enumerable.Intersect方法。然后我们对结果使用Any方法
bool containsValues = names.Intersect(subnames).Any();
这也可以:
bool result = names.Any(subnames.Contains);
编辑
这段代码可能看起来不完整,但它确实有效(方法组方法)。
你可以使用一些 Linq 然后使用Intersect
var commonNames = names.Intersect(subnames);
检查是否有:
bool anyInBoth = names.Intersect(subnames).Any();
要同时获得两者:
IEnumerable<string> inBoth = names.Intersect(subnames);
Linq 是我认为最简单的:
from n1 in names
join n2 in subnames on n1 equals n2
select n1;
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;
}
另一种方式:我分享如何检查一个(几个)单词部分和所有
string[] subnames = { "P", "G", "O" };
bool all = subnames.All(s => names.Contains(s));
bool anyInBoth = subnames.All(s => names.Contains(s));