Linq Concat Union Intersect 区别

Concat  :连连接两个序列。 http://msdn.microsoft.com/zh-cn/library/bb351755(v=vs.90).aspx

Union  : 通过使用默认的相等比较器生成两个序列的并集。http://msdn.microsoft.com/zh-cn/library/bb341731(v=vs.90).aspx

Intersect : 通过使用默认的相等比较器对值进行比较生成两个序列的交集。http://msdn.microsoft.com/zh-cn/library/bb460136(v=vs.90).aspx

通俗一点,可以这样理解:

假设有两序列:

var A=new List<int>{1,1,2,3,4}; 
var B=new List<int>{4,5,5,6,7};

那么A.Concat(B) 表示将A序列和B序列串联起来,以创建新的序列,不去除重复部分;

A.Union(B)表示将A序列和B序列串联起来,并去除重复部分,以创建新的序列;

而A.Intersect(B) 只取A序列和B序列相同的部分(交集),以创建新的序列。

示例代码:

void Main() 

    var A=new List<int>{1,1,2,3,4}; 
    var B=new List<int>{4,5,5,6,7}; 
     
    Print(A.Concat(B).ToList()); 
    Print(A.Union(B).ToList()); 
    Print(A.Intersect(B).ToList()); 
     
    /* 
    ********A.Concat(B)************ 
    1 
    1 
    2 
    3 
    4 
    4 
    5 
    5 
    6 
    7 
    ********************************* 
     
    *********A.Union(B)*********** 
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    ********************************* 
     
    *********A.Intersect(B)*********** 
    4 
    ********************************* 
    */ 

posted on 2012-11-06 16:45  水星曙光  阅读(230)  评论(0编辑  收藏  举报