Linq 集合操作符 Except,Intersect,Union

 
                IList<string> s1 = new List<string>() { "One", "Two", "Three", "Two", "Three", "wjire" };
                IList<string> s2 = new List<string>() { "www", "Tssswo", "Three" };
                //从 s1 中删除 s1,s2 都有的元素,同时,会按照数据类型的默认比较方式去重;
          //如果,该数据元素实现了 IEquatable<T> 接口,优先从按该接口实现的 Equals 方法去重;
          //当然,也可以向好多其他筛选方法一样,传一个 实现 IEqualityCompare<T> 的对象,这种方式的优先级最高.
var r1 = s1.Except(s2);//one,two,wjire (虽然 s1 有两个 two 但是,结果集合只有1个. r1.ToList().ForEach(f => Console.WriteLine(f)); Console.WriteLine("----------------------------"); //返回s1,s2的交集,同样,也会按要求去重 var r2 = s1.Intersect(s2); r2.ToList().ForEach(f => Console.WriteLine(f)); Console.WriteLine("----------------------------"); //返回s1,s2的并集,同样,也会按要求去重 var r3 = s1.Union(s2); r3.ToList().ForEach(f => Console.WriteLine(f)); Console.WriteLine("----------------------------");