たとえば、セッションに ArrayList が 1 つあります[305,306,380]
。
送信時に、ユーザーが選択した他の製品を 2 番目の配列に保存します。たとえば、[390,305,480,380]
別の 3 つの配列を作成するにはどうすればよいですか?
すべての新しい価値
[390,480]
両方のリストにあるすべての値
[305,380]
list2 にない list1 のすべての値
[306]
ASP.NET 4.0 C# でこれが必要です
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();
HashSetを次の方法で使用します。
var first = new HashSet<int>();
first.Add(...);
var second = ...;
1. second.ExceptWith(first);
2. first.IntersectWith(second);
3. first.ExceptWith(second);