iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
自我挑戰組

打造自己的Medium系列 第 23

Day23 IEnumerable vs IQueryable

  • 分享至 

  • xImage
  •  

前面在介紹LINQ的時候有稍微帶過,這邊想介紹一下這兩個介面的差異

簡易判斷

從資料撈取和篩選時機判斷:

Interface IEnumerable IQueryable
執行篩選 記憶體 資料庫
執行順序 先撈全部在過濾 先過濾在撈資料
概念 LINQ to Objects LINQ to SQL

深入一點點

IQueryable 繼承自 IEnumerable,因此IQueryable.GetEnumerator() 才是執行資料查詢的觸發點,也就是在呼叫終端方法時,如:ToList(),才真的去資料庫拉資料回來,因此前面的查詢條件都只是先保留,等到終端方法被呼叫時才轉換成SQL,並執行

  1. 那要怎麼知道現在是哪一種介面?
    因為EF主要是查資料庫的資料,會預設 DbSet ,實作 IQueryable

  2. 什麼時候會用到IEnumerable?
    LINQ 中使用了資料庫無法理解或轉換成SQL的C#方法

參考資料

Effective C# 42.區分 IEnumerable 與 IQueryable 資料來源
IEnumerable v.s IQueryable

作者的哈拉

倒數七天.../images/emoticon/emoticon68.gif


上一篇
Day22 雜談
下一篇
Day24 雜談
系列文
打造自己的Medium30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言