Pregunta

Estoy usando masivo para obtener la tabla de configuración en la base de datos.Me gustaría almacenar en caché la configuración ya que la aplicación obtiene valores de ella todo el tiempo.

una vez almacenado en caché, ¿hay una manera fácil de encontrar el objeto donde nombre= 'algo'

aquí es donde se almacena en caché toda la tabla.

    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; 
    } 

aquí es donde me gustaría extraer un registro de ese método

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

Sé que las declaraciones linq o lambda no están permitidas en objetos dinámicos.pero ¿cuál es la siguiente mejor forma de sacar ese objeto de esa lista?

¿Fue útil?

Solución

No podría escribir la expresión lamda directamente como el argumento Where, pero podría asignarla a una variable Func. También creo que los métodos de extensión no funcionarían en objetos dinámicos, por lo que debe llamar al método de extensión directamente.

Creo que podrías usar el siguiente código

        Func<dynamic, bool> check = x => x.Name == name;
        System.Linq.Enumerable.Where<dynamic>(this.Get(), check);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top