Linq的Set操作

 Linq 的Set 操作....
共4个操作.Distinct、Union、Intersect、Except.

Distinct

下图演示 Enumerable.Distinct 方法对字符序列的行为。返回的序列包含输入序列的唯一元素。

显示 Distinct() 的行为的图。

Except

下图演示 Enumerable.Except 的行为。返回的序列只包含位于第一个输入序列但不位于第二个输入序列的元素。

显示 Except() 的操作的图。

Intersect

下图演示 Enumerable.Intersect 的行为。返回的序列包含两个输入序列共有的元素。

显示两个序列的交叉的图。

Union

下图演示对两个字符序列执行的联合操作。返回的序列包含两个输入序列的唯一的元素。

显示两个序列的联合的图。

简单实例:
  1.  #region Set Operator
  2.         /* The Distinct原型
  3.          * 
  4.          * 功能:去掉重复的元素
  5.          * 与SqlServer中Distinct关键字一样
  6.          * 
  7.          *   public static IEnumerable<T> Distinct<T>(
  8.          *   this IEnumerable<T> source);
  9.          *  
  10.          */
  11.         static void DistinctOperatorPrototype()
  12.         {
  13.             string[] presidents = { "Adams""Arthur""Buchanan""Bush""Carter""Cleveland" };
  14.             Console.WriteLine("presidents Count:"+presidents.Count());
  15.             IEnumerable<string> doublePresidents = presidents.Concat(presidents);
  16.             Console.WriteLine(" after Concat presidents Count:" + doublePresidents.Count());
  17.             IEnumerable<string> DistinctPresidents = doublePresidents.Distinct();
  18.             Console.WriteLine("after Distinct presidents Count:" + DistinctPresidents.Count());
  19.         }
  20.         /*The Union原型
  21.          * 
  22.          * 功能:将多个集合运算成一个集合,消除重复项
  23.          * 和SqlServer中关键字Union关键字一样.
  24.          * 
  25.          * public static IEnumerable<T> Union<T>(
  26.          *    this IEnumerable<T> first,
  27.          *    IEnumerable<T> second);
  28.          *  
  29.          */
  30.         static void UnionPrototype()
  31.         {
  32.             string[] presidents = { "Adams""Arthur""Buchanan""Bush""Carter""Cleveland" };
  33.             Console.WriteLine("presidents element count:{0}", presidents.Count());
  34.             IEnumerable<string> first = presidents.Take(4);//取前4个元素
  35.             IEnumerable<string> second = presidents.Skip(2);//去掉前2个元素
  36.             Console.WriteLine("first elements count:{0}", first.Count());
  37.             Console.WriteLine("second elements count:{0}", second.Count());
  38.             IEnumerable<string> concat = first.Concat(second);
  39.             IEnumerable<string> union = first.Union(second);
  40.          
  41.             Console.WriteLine("after concat element count:{0}", concat.Count());
  42.             Console.WriteLine("after union element count:{0}", union.Count());
  43.         }
  44.         /*Intersect 原型
  45.          * 
  46.          * 功能:取2个集合的交集
  47.          * 
  48.          * public static IEnumerable<T> Intersect<T>(
  49.          *   this IEnumerable<T> first,
  50.          *   IEnumerable<T> second);
  51.          *
  52.          */
  53.         static void IntersectPrototype()
  54.         {
  55.             string[] presidents = { "Adams""Arthur""Buchanan""Bush""Carter""Cleveland" };
  56.             Console.WriteLine("presidents element count:{0}", presidents.Count());
  57.             IEnumerable<string> first = presidents.Take(4);//取前4个元素
  58.             IEnumerable<string> second = presidents.Skip(2);//去掉前2个元素
  59.             Console.WriteLine("first elements count:{0}", first.Count());
  60.             Console.WriteLine("second elements count:{0}", second.Count());
  61.             IEnumerable<string> concat = first.Concat(second);
  62.             IEnumerable<string> intersect = first.Intersect(second);
  63.             Console.WriteLine("after concat element count:{0}", concat.Count());
  64.             Console.WriteLine("after intersect element count:{0}", intersect.Count());
  65.         }
  66.         /*Except原型
  67.          * 
  68.          * 功能:返回的序列只包含位于第一个输入序列但不位于第二个输入序列的元素
  69.          * 
  70.          * public static IEnumerable<T> Except<T>(
  71.          *   this IEnumerable<T> first,
  72.          *   IEnumerable<T> second);
  73.          * 
  74.          * 
  75.          * 
  76.          */
  77.         static void ExceptPrototype()
  78.         {
  79.             string[] presidents = { "Adams""Arthur""Buchanan""Bush""Carter""Cleveland" };
  80.             Console.WriteLine("presidents element count:{0}", presidents.Count());
  81.             IEnumerable<string> first = presidents.Take(4);//取前4个元素
  82.             Console.WriteLine("first elements count:{0}", first.Count());
  83.             IEnumerable<string> except = presidents.Except(first);
  84.             Console.WriteLine("after except element count:{0}", except.Count());
  85.             foreach (string item in except)
  86.             {
  87.                 Console.WriteLine(item);
  88.             }
  89.         }
  90.         #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值