13

私は文字列の配列を持っています:例:

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

私は別の配列を持っています:

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

names配列にsubnames配列の要素があるかどうかを確認するにはどうすればよいですか。

上記の例では、「P」と「G」が名前に含まれています。

4

8 に答える 8

31

必要なものを提供するLinqソリューションは次のとおりです。

names.Any(x => subnames.Contains(x))
于 2012-06-21T13:40:27.117 に答える
19

最も簡単な方法は、Enumerable.Intersectメソッドを使用することです。次に、結果のAnyメソッドを使用します

bool containsValues = names.Intersect(subnames).Any();
于 2012-06-21T13:39:16.613 に答える
8

This will work too:

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

EDIT

This code may look incomplete but it actually works (method group approach).

于 2012-06-21T13:42:45.150 に答える
4

いくつかのLinqを使用してから、Intersect

var commonNames = names.Intersect(subnames);
于 2012-06-21T13:39:28.987 に答える
2

あるかどうかを確認するには:

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

両方で1つを取得するには:

IEnumerable<string> inBoth = names.Intersect(subnames);
于 2012-06-21T13:46:35.110 に答える
0

Linqは私が思う最も単純なものです:

from n1 in names
join n2 in subnames on n1 equals n2
select n1;
于 2012-06-21T13:41:18.893 に答える
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;

}
于 2019-06-22T22:23:27.520 に答える
0

別の方法:1つの(いくつかの)単語の部分とすべてをチェックする方法の両方を共有します

string[] subnames = { "P", "G", "O" };
    
bool all = subnames.All(s => names.Contains(s));
bool anyInBoth = subnames.All(s => names.Contains(s));
于 2021-06-01T08:53:36.823 に答える