สิ่งนี้ส่วนใหญ่เกิดขึ้นในประวัติศาสตร์ของ 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 ได้อย่างชัดเจน