2017-12-19 16 views
0

list1の文字列値がlist2に存在するかどうかをチェックする最も効果的な方法は何でしょうか?最も早い方法のチェック2リスト間の比較

擬似コード例

StringList List1 = {"a", "b", "c", "d"}; 
StringList List2 = {"d", "c", "b", "a"}; 

foreach (string a in List1) 
{ 
    foreach (string b in List2) 
    { 
     if(a==b) 
     { 
      WriteLine("match"); 
     } 
    } 
} 

この方法は、最善の解決策であることがあまりにも遅いです、私が使用していますプラットフォームは、C#のオフ派生BI#です。 Array.Existsは現在のライブラリに存在しません。

+0

最初にソートするかルックアップテーブルを作成すると、二次的な藻類よりもスピードアップがよくなる – doctorlove

答えて

3

あなたはIntersectを使用することができます。

var allIntersections = List1.Intersect(List2); 

foreach(string match in allIntersections) 
    Console.WriteLine(match); 

あなただけの少なくとも一方が交差するかどうかを知りたい場合は、次のカンマ区切りの文字列にリストを変換する

bool anyExist = allIntersections.Any(); 
+0

このライブラリに 'Intersect'は存在しませんが、私は非常に有効なアイデアを与えていますが、考えてください – ArraysRus

+0

@ArraysRus:クラスファイルの先頭に 'using System.Linq;'を追加する必要があります –

+0

@ArraysRus: 'HashSet 'はありますか? –

0

を、標準InStringを使用することができますこの場合の関数はStringContainsと呼ばれます。

foreach (string a in List1) 
{ 
    if(StringContains(a, NewString)) 
    { 
     WriteLine("Match"); 
    } 
} 
+0

これは、ダブルループを使用するよりです。また、賢明にあなたのdeliminatorを選択してください:) – zcui93

0
bool flag= list2.Except(list1).Any(); 

リスト1はリスト2からすべて含まれていない場合、これはtrueになります。

関連する問題