Concat/Union/Intersect/Except操作

適用場景:對兩個集合的處理,例如追加、合併、取相同項、相交項等等。

Concat(連接)

說明:連接不同的集合,不會自動過濾相同項;延遲。

1.簡單形式

var q = ( from c in db.Customers
          select c.Phone ).Concat(
                             from c in db.Customers
                             select c.Fax 
                           ).Concat( from e in db.Employees
                                     select e.HomePhone );

語句描述:返回所有消費者和雇員的電話和傳真。

2.複合形式

var q = ( from c in db.Customers 
          select new  
          {
              Name = c.CompanyName,
              c.Phone
          }
        ).Concat( from e in db.Employees
                  select new
                  {
                      Name = e.FirstName + " " + e.LastName,
                      Phone = e.HomePhone
                  }
        );

語句描述:返回所有消費者和雇員的姓名和電話。

Union(合併)

說明:連接不同的集合,自動過濾相同項;延遲。即是將兩個集合進行合併操作,過濾相同的項。

var q = ( from c in db.Customers select c.Country )
        .Union( from e in db.Employees select e.Country );

語句描述:查詢顧客和職員所在的國家。

Intersect(相交)

說明:取相交項;延遲。即是獲取不同集合的相同項(交集)。即先遍歷第一個集合,找出所有唯一的元素,然後遍歷第二個集合,並將每個元素與前面找出的元素作對比,返回所有在兩個集合內都出現的元素。

var q = ( from c in db.Customers select c.Country )
        .Intersect( from e in db.Employees select e.Country );

語句描述:查詢顧客和職員同在的國家。

Except(與非)

說明:排除相交項;延遲。即是從某集合中刪除與另一個集合中相同的項。先遍歷第一個集合,找出所有唯一的元素,然後再遍歷第二個集合,返回第二個集合中所有未出現在前面所得元素集合中的元素。

var q = ( from c in db.Customers select c.Country )
        .Except( from e in db.Employees select e.Country );

語句描述:查詢顧客和職員不同的國家。

arrow
arrow
    文章標籤
    LINQ LINQ to SQL
    全站熱搜

    Jimmy 發表在 痞客邦 留言(0) 人氣()