2009-08-07 155 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