1 // 2 // 摘要: 3 // 通过使用默认的相等比较器对值进行比较生成两个序列的差集。 4 // 5 // 参数: 6 // first: 7 // 一个 System.Collections.Generic.IEnumerable`1,将返回其也不在 second 中的元素。 8 // 9 // second: 10 // 一个 System.Collections.Generic.IEnumerable`1,如果它的元素也出现在第一个序列中,则将导致从返回的序列中移除这些元素。 11 // 12 // 类型参数: 13 // TSource: 14 // 输入序列中的元素的类型。 15 // 16 // 返回结果: 17 // 包含两个序列元素的差集的序列。 18 // 19 // 异常: 20 // T:System.ArgumentNullException: 21 // first 或 second 为 null。 22 public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);
1 // 2 // 摘要: 3 // 通过使用指定的 System.Collections.Generic.IEqualityComparer`1 对值进行比较产生两个序列的差集。 4 // 5 // 参数: 6 // first: 7 // 一个 System.Collections.Generic.IEnumerable`1,将返回其也不在 second 中的元素。 8 // 9 // second: 10 // 一个 System.Collections.Generic.IEnumerable`1,如果它的元素也出现在第一个序列中,则将导致从返回的序列中移除这些元素。 11 // 12 // comparer: 13 // 用于比较值的 System.Collections.Generic.IEqualityComparer`1。 14 // 15 // 类型参数: 16 // TSource: 17 // 输入序列中的元素的类型。 18 // 19 // 返回结果: 20 // 包含两个序列元素的差集的序列。 21 // 22 // 异常: 23 // T:System.ArgumentNullException: 24 // first 或 second 为 null。 25 public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);
1 var list1 = new List<int> { 1,2,3,4,5,6}; 2 var list2 = new List<int> { 3,4,5,6,7,8}; 3 4 var list3 = list1.Except(list2); 5 var list4 = list2.Except(list1); 6 7 foreach (var item in list1) 8 { 9 Console.Write(item + ","); 10 } 11 12 Console.WriteLine(); 13 14 foreach (var item in list2) 15 { 16 Console.Write(item + ","); 17 } 18 19 Console.WriteLine(); 20 21 foreach (var item in list3) 22 { 23 Console.Write(item+","); 24 } 25 26 Console.WriteLine(); 27 28 foreach (var item in list4) 29 { 30 Console.Write(item+","); 31 }
结果: