2009-08-07 154 views
1

我正在使用LinQ to XML在我的頁面加載時填充下拉列表。如何緩存結果,以便我不必在每次加載頁面時都運行查詢?此外,該XML文件將只會每天更新一次。緩存還是每次只讀一遍會更好?LinQ到XML查詢

回答

1

請致電ToList()查詢的結果。然後緩存在一個靜態變量的結果,在一個線程安全的方式訪問:

private static List<Whatever> dropDownListValues; 
private static object listLock = new object(); 

public static IList<Whatever> DropDownListValues 
{ 
    get 
    { 
     lock(listLock) 
     { 
      if (dropDownListValues == null || 
       DetectValuesChanged()) // However you implement this! 
      { 
       dropDownListValues = // insert your query here 
             .ToList(); 
      } 
      return dropDownListValues; 
     } 
    } 
} 
+0

工作得很好,正是我所需要的。謝謝 – 2009-08-07 13:06:56

0

使用標準的緩存技術。請參閱this post

+0

但是從使用後的概念(緩存是好的),而不是他的例子,這是非常愚蠢的。 (爲什麼在共享一個緩存的網絡服務器環境中,你是否必須通過一個文件將緩存弄髒???) – 2009-08-07 12:12:32