2009-08-07 14 views
1

J'utilise LinQ to XML pour remplir une liste déroulante lorsque ma page se charge. Comment puis-je mettre en cache les résultats afin que je n'ai pas à exécuter la requête chaque fois que la page se charge? De plus, le fichier xml ne sera mis à jour qu'une fois par jour. Est-il préférable de mettre en cache ou simplement le lire à chaque fois?Requête LinQ to XML

Répondre

1

Appelez ToList() sur les résultats de la requête. Puis mettre en cache les résultats dans une variable statique, accessible d'une manière thread-safe:

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

Fonctionne bien, exactement ce que je cherchais. Merci –

0

Utilisation de techniques de mise en cache standard. S'il vous plaît voir this post.

+0

Mais utilisez le concept de ce poste (la mise en cache est bonne), pas ses exemples, qui sont vraiment stupides. (Pourquoi, dans un environnement de serveur Web qui partage un cache, devez-vous salir le cache via un fichier ???) –