0

我在 Session 中有一个 ArrayList,比如说[305,306,380]

提交时,用户选择我将它们保存在第二个数组中的其他产品,例如[390,305,480,380]

我怎样才能在哪里制作另外三个数组

  1. 所有新值[390,480]

  2. 两个列表中的所有值[305,380]

  3. list1 中不在 list2 中的所有值[306]

我在 ASP.NET 4.0 C# 中需要这个

4

2 回答 2

4

您可以使用ArrayList.ToArray()针对您的数组列表获取数组。然后使用 LINQ,您可以通过Except方法轻松获得所需的内容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 回答