Question

J'utilise massif pour obtenir la table de configuration dans la base de données. Je voudrais mettre en cache la configuration depuis l'application obtient des valeurs de tout le temps.

une fois mises en cache est-il un moyen facile de trouver l'objet où name = « quelque chose »

ici est où toute la table est mise en mémoire cache.

    protected override dynamic Get()
    { 
        var ret = HttpRuntime.Cache["Config"]; 
        if (ret == null)
        { 
            ret = _table.All(); 
            HttpRuntime.Cache.Add("Config", ret, null, DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration,CacheItemPriority.Low, null );
        }
        return ret; 
    } 

est ici où je voudrais tirer un enregistrement de cette méthode

    protected override dynamic Get(string name)
    {
        return this.Get().Where(x => x.Name == name ).SingleOrDefault(); 
    }

Je sais déclarations LINQ ou lambda ne sont pas autorisés dans les objets dynamiques. mais ce qui est le meilleure façon de tirer un objet que sur cette liste?

Était-ce utile?

La solution

Vous ne pouvait pas écrire l'expression lamda directement comme où l'argument, mais vous pouvez l'assigner à une variable Func. Aussi je crois que les méthodes d'extension ne marcherait pas sur des objets dynamiques, de sorte que vous devez appeler la méthode d'extension directement.

Je pense que vous pouvez utiliser le ci-dessous le code,

        Func<dynamic, bool> check = x => x.Name == name;
        System.Linq.Enumerable.Where<dynamic>(this.Get(), check);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top