2010-06-24 54 views
0

我有我的BLL一些方法,從數據庫中獲取一些記錄,並通過它結合數據與UI控件如GridView或...
我可以選擇我的方法返回的數據類型無論是IQueryable<t>還是Ilist<t>
我的問題是哪一個對我更好,爲什麼? 其實我不知道這兩種類型的區別,我不知道哪一種最適合哪種情況?IQueryable的<t>或者IList的<t>

謝謝

回答

5

不同的是,IList<T>代表結果的實際列表。它將被「物化」 - 從數據庫中提取到內存中。 (理論上它只是過程的接口 - 它可能還是推遲一切......)

IQueryable<T>表示查詢 - 你仍然可以編寫額外的查詢後位,例如。然後,您可以通過詢問結果來評估查詢。這將使用延遲執行,只在實際需要時才請求結果。至於這

你應該返回......如果你只是要直接綁定到用戶界面,它很可能是有意義的將其轉換爲一個列表,讓你有當查詢實際上是更好地控制執行。另一方面,如果你想能夠調整查詢,使用IQueryable<T>將給予調用者更大的靈活性。

+0

感謝您的解釋。我也明白你的觀點,並且會尋找最簡單的例子來實現兩個事物,這些事物將顯示上述情況之間的差異。我不知道如何在類中實現接口。即我知道接口是什麼,它們提供了什麼功能。但我不知道如何使用它們。例如。 IDisposable接口,我知道實現,但如何落實是我的問題一樣本的IQueryable接口以及 – 2010-06-24 09:30:17

+0

@Shantanu什麼時候會做什麼:你當然不應該是實現IQueryable的''自己。這就是LINQ to SQL(或其他)的用途。 – 2010-06-24 09:41:28

+0

你能否提供一個例子,可以是一個鏈接代表他們的實施和兩者之間的差異。這將是一個很大的幫助 – 2010-06-24 09:47:27

0

我建議的ICollection或IList的

的IQueryable - 提供功能針對特定數據源,其中所述數據的類型是已知的評估查詢。

在任何時候都可以調用ICollection.AsQueryable()。