使用IQueryable 使用IEnumerable IQueryable介面與IEnumberable介面的區別: IEnumerable<T> 泛型類在調用自己的SKip 和 Take 等擴展方法之前數據就已經載入在本地記憶體里了,而IQueryable<T> 是將Skip ,take 這些方法表 ...
使用IQueryable
using (var db = new CentaStaffEntities())
{
IQueryable<Staff> queryablestaffs = db.Staff.AsQueryable().OrderBy(p=>p.StaffID).Skip(3).Take(3);
foreach (var item in queryablestaffs)
{
Console.WriteLine(item.CnName);
}
}
使用IEnumerable
using (var db = new CentaStaffEntities()) { IEnumerable<Staff> enumerablestaffs = db.Staff.AsEnumerable().OrderBy(p => p.StaffID).Skip(3).Take(3); foreach (var item in enumerablestaffs) { Console.WriteLine(item.CnName); } }
IQueryable介面與IEnumberable介面的區別: IEnumerable<T> 泛型類在調用自己的SKip 和 Take 等擴展方法之前數據就已經載入在本地記憶體里了,而IQueryable<T> 是將Skip ,take 這些方法表達式翻譯成T-SQL語句之後再向SQL伺服器發送命令,它並不是把所有數據都載入到記憶體里來才進行條件過濾。
參考:http://www.cnblogs.com/ambon/articles/4766924.html
Include(),兩表必須含有外鍵關係,只需要指定鍵名對應的類屬性名即可,不需指定結果欄位(即全部映射)。預設搜索某表時,不會順帶查詢外鍵表,直到真正使用時才會再讀取資料庫查詢;若是使用 Include(),則會在讀取本表時把指定的外鍵表信息也讀出來。
using (var db = new TestEntities()) { IEnumerable<Student> enumerablestaffs = db.Student; foreach (var item in enumerablestaffs) { //每次都會獲取 Console.WriteLine(item.Class.Name); } }
Include
using (var db = new TestEntities()) { //預載入關聯表 前提必須有主外鍵關係 IEnumerable<Student> enumerablestaffs = db.Student.Include("Class"); //只查詢一次 foreach (var item in enumerablestaffs) { Console.WriteLine(item.Class.Name); } }
Left join