C# 中的 IEnumerable 與 IQueryable 有什麼區別?


  • IEnumerable 存在於 System.Collections 名稱空間中。
  • IQueryable 存在於 System. Linq 名稱空間中。
  • IEnumerable 和 IQueryable 都是前向集合。
  • IEnumerable 不支援延遲載入
  • IQueryable 支援延遲載入
  • 從資料庫中查詢資料時,IEnumerable 會在伺服器端執行選擇查詢,在客戶端載入記憶體資料,然後過濾資料。
  • 從資料庫中查詢資料時,IQueryable 使用所有過濾器在伺服器端執行選擇查詢。
  • IEnumerable 擴充套件方法採用可操作物件。
  • IQueryable 擴充套件方法採用表示式物件,即表示式樹。

示例

IEnumerable

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

IQueryable

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

更新於:2020 年 8 月 5 日

10K+ 瀏覽量

開啟你的 職業生涯

完成該課程並獲得認證

開始學習
廣告