私は文字列の配列を持っています:例:
string [] names ={"P","A","B","G","F","K","R"}
私は別の配列を持っています:
string [] subnames={"P","G","O"}
names配列にsubnames配列の要素があるかどうかを確認するにはどうすればよいですか。
上記の例では、「P」と「G」が名前に含まれています。
必要なものを提供するLinqソリューションは次のとおりです。
names.Any(x => subnames.Contains(x))
最も簡単な方法は、Enumerable.Intersectメソッドを使用することです。次に、結果のAnyメソッドを使用します
bool containsValues = names.Intersect(subnames).Any();
This will work too:
bool result = names.Any(subnames.Contains);
EDIT
This code may look incomplete but it actually works (method group approach).
いくつかのLinqを使用してから、Intersect
var commonNames = names.Intersect(subnames);
あるかどうかを確認するには:
bool anyInBoth = names.Intersect(subnames).Any();
両方で1つを取得するには:
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;
}
別の方法:1つの(いくつかの)単語の部分とすべてをチェックする方法の両方を共有します
string[] subnames = { "P", "G", "O" };
bool all = subnames.All(s => names.Contains(s));
bool anyInBoth = subnames.All(s => names.Contains(s));