0

たとえば、セッションに ArrayList が 1 つあります[305,306,380]

送信時に、ユーザーが選択した他の製品を 2 番目の配列に保存します。たとえば、[390,305,480,380]

別の 3 つの配列を作成するにはどうすればよいですか?

  1. すべての新しい価値[390,480]

  2. 両方のリストにあるすべての値[305,380]

  3. list2 にない list1 のすべての値[306]

ASP.NET 4.0 C# でこれが必要です

4

2 に答える 2

4

ArrayList.ToArray()配列リストに対して配列を取得するために使用できます。Except次に、LINQを使用すると、メソッドで必要なものを簡単に取得できます。Intersectたとえば、

array2.Except(array1)
array1.Except(array2)
array1.Intersect(array2)

編集:完全なコード

要件に応じて、コードは次のようになります。

        ArrayList arrayList1 = new ArrayList(new int[] { 305, 306, 380 });
        ArrayList arrayList2 = new ArrayList(new int[] { 390, 305, 480, 380 });

        int[] array1 = (int[])arrayList1.ToArray(typeof(int));
        int[] array2 = (int[])arrayList2.ToArray(typeof(int));

        //1. All New values
        int[] uniqueInArray2 = array2.Except(array1).ToArray();

        //2. Common values
        int[] commonValues = array1.Intersect(array2).ToArray();

        //3. Values of arrayList1 which are not in arrayList2
        int[] uniqueInArray1 = array1.Except(array2).ToArray();
于 2012-04-07T06:52:00.430 に答える
2

HashSetを次の方法で使用します。

var first = new HashSet<int>();
first.Add(...);

var second = ...;

1. second.ExceptWith(first);
2. first.IntersectWith(second);
3. first.ExceptWith(second);
于 2012-04-07T06:42:41.887 に答える