Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

IEnumerable และ IQueryable ใน C # แตกต่างกันอย่างไร


  • IEnumerable มีอยู่ในเนมสเปซ System.Collections
  • มี IQueryable อยู่ในระบบ เนมสเปซ Linq
  • ทั้ง IEnumerable และ IQueryable เป็นคอลเล็กชันที่ส่งต่อ
  • IEnumerable ไม่รองรับการโหลดแบบ Lazy Loading
  • IQueryable รองรับการโหลดแบบ Lazy Loading
  • การสืบค้นข้อมูลจากฐานข้อมูล IEnumerable ดำเนินการค้นหาแบบเลือกข้อมูลในฝั่งเซิร์ฟเวอร์ โหลดข้อมูลในหน่วยความจำทางฝั่งไคลเอ็นต์ แล้วกรองข้อมูล
  • การสืบค้นข้อมูลจากฐานข้อมูล IQueryable ดำเนินการค้นหาแบบ Select ที่ฝั่งเซิร์ฟเวอร์พร้อมตัวกรองทั้งหมด
  • เมธอด IEnumerable Extension ดึงออบเจ็กต์ที่ใช้งานได้
  • วิธีการขยาย IQueryable ใช้วัตถุนิพจน์หมายถึงต้นไม้นิพจน์

ตัวอย่าง

จำนวนนับได้

dbContext dc = new dbContext ();
IEnumerable
<SocialMedia>
list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
</SocialMedia>

คำสั่ง SQL ที่สร้างขึ้นสำหรับข้อความค้นหาด้านบน

SELECT [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0

สืบค้นได้

dbContext dc = new dbContext ();
IQueryable<SocialMedia> list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);

คำสั่ง SQL ที่สร้างขึ้นสำหรับข้อความค้นหาด้านบน

SELECT top 1 [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0