【原創】LINQ to SQL學習筆記(四)——Join(1)

來源:互聯網
上載者:User
文章目錄
  • (1)一對多關聯性
  • (2)多對多關係
  • (3)自串連關係

     本篇將介紹Join操作符的使用,Join操作符類似於SQL命令中的join關鍵字,都是用於進行表串連操作的,實現多個表之間的查詢處理,當然此處的多表也包含自身與自身的串連。

     Join操作符的使用包括三類,分別為Join(Join查詢),SelectMany(Select一對多選擇)和GroupJoin(分組Join查詢)。

1、SelectMany

  SelectMany查詢需要滿足兩個條件,1、查詢語句中沒有Join和into關鍵字,2、必須出現EntitySet。在表關係中包括一對一、一對多、多對多關係。

(1)一對多關聯性

    一對多的關係可以理解成一個A對應多個B,例如一個班級對應多個學生。

var query = from class in db.Classes                        from stu in class.Students                        where class.Grade == 5                    select stu;

  上述語句描述Grade值等於5的班級的所有學生。在查詢過程中,Students以EntitySet的形式出現在Classes類中。

(2)多對多關係

  多對多的關係可以理解成一個A對應多個B,同時一個B又對應多個A。例如學生與課程之間的關係,一個學生可以選擇多門課程,一門課程可以被多個學生選擇。對應於多對多的關係,一般使用三張表來描述,兩張實體表,一張關係表。

var query = from s in db.Students                    from ss in s.StudentCources                     where s.Age == 20                    select new {                    s.FirstName,                    s.LastName,                    ss.Cources.Cource.Name                    };                

  上述語句描述年齡為20歲的學生選擇的課程名稱和學生姓名。

(3)自串連關係

  自串連關係描述的就是自己與自己進行串連,根據某個相同資訊進行篩選。例如:

var query = from s1 in db.Students                     from s2 in db.Students                    where s1.Age == s2.Age                    select new {                        FirstName1=s1.FirstName,                        LastName1 = s1.LastName,                        FirstName2=s2.FirstName,                        LastName2 = s2.LastName,                        s1.Age                    };

  上述語句描述了選擇同齡學生,並顯示他們的姓名和年齡。

 

總結:

  本篇僅介紹了SelectMany形式的Join使用,並通過舉例講述了SelectMany中的三種不同表現形式。下篇將對GroupJoin形式進行介紹。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.