1. 程式人生 > >IEnumerable和IQueryable的區別

IEnumerable和IQueryable的區別

IQueryable繼承自IEnumerable,所以對於資料遍歷來說,它們沒有區別。

1.IEnumerable查詢必須在本地執行.並且執行查詢前我們必須把所有的資料載入到本地.而且更多的時候.載入的資料有大量的資料是我們不需要的無效資料.但是我們卻不得不傳輸更多的資料.做更多的無用功。
使用IEnumerable,所有對於IEnumerable的過濾,排序等操作,都是在記憶體中發生的。也就是說資料已經從資料庫中獲取到了記憶體中,只是在記憶體中進行過濾和排序操作。

2.IQueryable卻總能只提供你所需要的數 據.大大減少了資料的傳輸
IQueryable的優勢是它有表示式樹,所有對於IQueryable的過濾,排序等操作,都會先快取到表示式樹中,只有當真正遍歷發生的時候,才會將表示式樹由IQueryProvider執行獲取資料操作。