1

2 つの ArrayList arrayListA と arrayListB にデータがあります。

これら2つのarrayListに違いがあるかどうかを確認したいと思います。

だから私はコードでこれを行います:

 ArrayList diff = new ArrayList();
 foreach (string[] a in arrayListB)
 {
     if(!arrayListA.Contains(a))
     {
         diff.Add(a);
     }
 }

プログラムを実行すると、ここで問題が発生します。arrayListB のすべてのデータが ArrayList diff に追加されます。arrayListA にのみ存在し、arrayListB には存在しないデータのみを追加する必要がありますよね?

何がうまくいかないのですか?

これは、プログラムを実行した後の結果です。リストボックス a は arrayListA のデータ、リストボックス B は arrayListB のデータ、リストボックス diff は diff のデータです。 編集

私はすでに System.Linq に入っています。

しかし、リストの「場所」プロパティを取得できません。

ハイ

4

4 に答える 4

4

文字列の配列の配列リストを使用しているため、Containsメソッドは機能しません。Equalsメソッドを使用して等しいかどうかをチェックしますがEquals、C# 配列での の実装では、配列要素の等しいことに注意を払いません。

これは、C# で配列の等価性をチェックする問題について説明している質問へのリンクです。

于 2012-06-14T07:06:59.263 に答える
0

組み込みの Equal はありません。これstring[]によりContains、おそらく必要な方法で作業できます。カスタム比較を実装し、比較を引数として受け取るContainsstring[]の他のオーバーライドを使用する必要があります。

補足として、厳密に型指定されたリストを使用して like で開始することをお勧めしますList<string[]>

于 2012-06-14T07:09:13.073 に答える