**:
ienumerable介面
公開列舉器,該列舉器支援在指定型別的集合上進行簡單迭代。也就是說:實現了此介面的object,就可以直接使用foreach遍歷此object;
iqueryable 介面
它繼承 ienumerable 介面,而因為.net版本加入linq和
iqueryable後,使得ienumerable不再那麼單調,變得更加強大和豐富。
為了區別兩個介面,我們通過乙個實際的例子來解釋一下。
根據上篇隨筆的例項,編寫如下**:
staticvoid main(string注意紅色**部分,在用linq查詢實體集合之前我先將其轉換成args)
console.writeline(i);
foreach (var c in
classesienu)
console.writeline(i);
}console.writeline("ok
");console.readkey();
}
ienumerable介面型別,看看最終執行的sql是怎樣的。
第一種:直接返回
iqueryable型別的查詢,如下圖所示:
第二種:在用分頁查詢之前先將其轉換成ienumerable實際執行的sql如下圖所示:
總結
iqueryable介面與ienumberable介面的區別: ienumerable泛型類在呼叫自己的skip 和 take 等擴充套件方法之前資料就已經載入在本地記憶體裡了,而iqueryable是將skip ,take 這些方法表示式翻譯成t-sql語句之後再向sql伺服器傳送命令,它並不是把所有資料都載入到記憶體裡來才進行條件過濾。
看這裡:
IEnumerable和IQueryable之我觀
在弄明白ienumerable和這兩個東西之前,首先我們要清楚 linq 查詢操作中的型別關係 問題。引用msdn的文字 不轉換源資料的查詢 下圖演示不對資料執行轉換的 linq to objects 查詢操作。源包含乙個字串序列,查詢輸出也是乙個字串序列。資料來源的型別引數決定範圍變數的型別。選擇...
IEnumerable和IQueryable之我觀
在弄明白ienumerable和這兩個東西之前,首先我們要清楚 linq 查詢操作中的型別關係 問題。引用msdn的文字 不轉換源資料的查詢 下圖演示不對資料執行轉換的 linq to objects 查詢操作。源包含乙個字串序列,查詢輸出也是乙個字串序列。資料來源的型別引數決定範圍變數的型別。選擇...
IEnumerable和IQueryable的區別
ienumerable介面 公開列舉器,該列舉器支援在指定型別的集合上進行簡單迭代。也就是說 實現了此介面的object,就可以直接使用foreach遍歷此object iqueryable 介面 它繼承 ienumerable 介面,而因為.net版本加入linq和 iqueryable後,使得i...