2013-06-03 63 views
0

我有一個相對較小的視圖,我想在從數據庫中獲取緩存後緩存它。由於我只需要基於userID的特定行,所以我寧願不循環遍歷我的userID列表並每次查詢數據庫。我寧願讓內存中的表,然後能夠執行linq查詢來獲得我想要的特定行。從LINQ創建可查詢的緩存結果

var view = dbContext.view; //I know this line doesn't execute the query 

for(int i = 0; i < userIDCount; i++) 
{ 
    var dataRow = view.Where(v => v.userID == userIDs[i]); 
} 

有沒有辦法保存在內存視圖,並能夠使用LINQ查詢反對在沒有循環一遍又一遍擊中DB?

回答

2
var view = dbContext.view.ToList(); 

將緩存您的視圖,通過創建一個內存IEnumerable。您仍然可以針對它運行Linq查詢。

但是,請考慮將結果放入Dictionary。通過索引獲取行會快得多。

+0

是的,但後來我無法運行LINQ查詢。 – Legion

+0

當然可以。 'ToList()'創建一個'IEnumerable'。所有的Linq擴展方法仍然適用。看到這裏:http://msdn.microsoft.com/en-us/library/9eekhta0.aspx –

+0

是的...是的,你可以。對於那個很抱歉。我的印象是,LINQ只對IQueryable起作用。 – Legion