สิ่งนี้ส่วนใหญ่เกิดขึ้นในประวัติศาสตร์ของ LINQ
LINQ เดิมทีตั้งใจให้เป็นแบบ SQL และใช้ (ส่วนใหญ่ แต่ไม่เฉพาะ) เพื่อเชื่อมต่อกับฐานข้อมูล SQL สิ่งนี้นำไปสู่คำศัพท์ส่วนใหญ่ที่อิงกับ SQL
ดังนั้น "เลือก" มาจากของ SQL selectคำสั่งและ "รวม" มาจากฟังก์ชันการรวม SQL (เช่นcount, sum, avg, min, max)
สำหรับผู้ที่ตั้งคำถามกับระดับที่ LINQ เดิมเกี่ยวข้องกับ SQL ฉันจะอ้างถึง (ตัวอย่าง) บทความของ Microsoft เกี่ยวกับCωซึ่งเป็นภาษาที่คิดค้นโดย Microsoft Research และดูเหมือนจะเป็นที่ที่พื้นฐานของ LINQ ทำงาน ก่อนที่จะเพิ่มลงใน C # และ. NET
ตัวอย่างเช่นพิจารณาบทความ MSDN ในCωซึ่งระบุว่า:
ผู้ประกอบการสืบค้นในCω
Cωเพิ่มคลาสของตัวดำเนินการคิวรีสองคลาสในภาษา C #:
- โอเปอเรเตอร์ที่ใช้ XPath สำหรับการค้นหาตัวแปรสมาชิกของวัตถุตามชื่อหรือตามประเภท
- ตัวดำเนินการบน SQL สำหรับการดำเนินการแบบสอบถามที่ซับซ้อนที่เกี่ยวข้องกับการประมาณการการจัดกลุ่มและการเข้าร่วมข้อมูลจากวัตถุหนึ่งหรือมากกว่า
อย่างน้อยเท่าที่ฉันรู้ตัวดำเนินการตาม XPath ไม่เคยถูกเพิ่มลงใน C # เหลือเพียงตัวดำเนินการที่ได้รับการบันทึกไว้ (ก่อนที่ LINQ จะมีอยู่) เป็นการอ้างอิงโดยตรงบน SQL
ตอนนี้มันเป็นความจริงอย่างแน่นอนที่ LINQ ไม่เหมือนกับผู้ดำเนินการคิวรี่ที่ใช้ SQL ในCω โดยเฉพาะอย่างยิ่ง LINQ จะติดตามวัตถุพื้นฐานของ C # และการเรียกใช้ฟังก์ชันของไวยากรณ์อย่างใกล้ชิดกว่าCω คิวรี C followed ติดตามไวยากรณ์ SQL อย่างใกล้ชิดยิ่งขึ้นดังนั้นคุณสามารถเขียนสิ่งนี้ (อีกครั้งซึ่งดึงโดยตรงจากบทความที่ลิงก์ด้านบน):
rows = select c.ContactName, o.ShippedDate
from c in DB.Customers
inner join o in DB.Orders
on c.CustomerID == o.CustomerID;
และใช่บทความเดียวกันพูดคุยกันโดยเฉพาะเกี่ยวกับการใช้แบบสอบถามที่ยึดตาม SQL เพื่อสืบค้นข้อมูลที่มาจากฐานข้อมูล SQL จริง:
ในการเชื่อมต่อกับฐานข้อมูล SQL ในCωจะต้องมีการเปิดเผยเป็นแอสเซมบลีที่มีการจัดการ (นั่นคือไฟล์ไลบรารี. NET) ซึ่งถูกอ้างอิงโดยแอปพลิเคชัน ฐานข้อมูลเชิงสัมพันธ์สามารถสัมผัสกับCωเป็นแอสเซมบลีที่มีการจัดการอย่างใดอย่างหนึ่งโดยใช้เครื่องมือบรรทัดคำสั่งsql2comega.exeหรือกล่องโต้ตอบเพิ่มสคีมาฐานข้อมูล ...จากภายใน Visual Studio วัตถุฐานข้อมูลถูกใช้โดยCωเพื่อแสดงฐานข้อมูลเชิงสัมพันธ์ที่โฮสต์โดยเซิร์ฟเวอร์ ฐานข้อมูลวัตถุมีทรัพย์สินของประชาชนในแต่ละตารางหรือมุมมองและวิธีการในการทำงานแต่ละตารางมูลค่าที่พบในฐานข้อมูล ในการสืบค้นฐานข้อมูลเชิงสัมพันธ์ต้องระบุฟังก์ชันตารางมุมมองหรือตารางที่มีค่าเป็นอินพุตของตัวดำเนินการที่ใช้ SQL หนึ่งตัวขึ้นไป
ตัวอย่างโปรแกรมและผลลัพธ์ต่อไปนี้แสดงความสามารถบางอย่างของการใช้ตัวดำเนินการบน SQL เพื่อสอบถามฐานข้อมูลเชิงสัมพันธ์ในCω ฐานข้อมูลที่ใช้ในตัวอย่างนี้คือตัวอย่างฐานข้อมูล Northwind ที่มาพร้อมกับ Microsoft SQL Server DB ชื่อที่ใช้ในตัวอย่างหมายถึงอินสแตนซ์ระดับโลกของวัตถุฐานข้อมูลในNorthwind namespace ของNorthwind.dllประกอบสร้างขึ้นโดยใช้sql2comega.exe
ดังนั้นใช่จากจุดเริ่มต้น (หรือแม้กระทั่งก่อนที่จะเริ่มต้นขึ้นอยู่กับมุมมองของคุณ) LINQ ขึ้นอยู่กับ SQL อย่างชัดเจนและมีจุดประสงค์เพื่อให้สามารถเข้าถึงข้อมูลในฐานข้อมูล SQL ได้อย่างชัดเจน