Domanda

Sto utilizzando massive per ottenere la tabella di configurazione nel database.Vorrei memorizzare nella cache la configurazione poiché l'app ne ricava sempre valori.

una volta memorizzato nella cache esiste un modo semplice per trovare l'oggetto dove name= 'qualcosa'

qui è dove l'intera tabella viene memorizzata nella 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; 
    } 

qui è dove vorrei estrarre un record da quel metodo

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

So che le istruzioni linq o lambda non sono consentite negli oggetti dinamici.ma qual è il miglior modo per estrarre quell'oggetto da quell'elenco?

È stato utile?

Soluzione

Non è possibile scrivere l'espressione lamda direttamente come argomento Where, ma è possibile assegnarla a una variabile Func. Inoltre, credo che i metodi di estensione non funzionerebbero su oggetti dinamici, quindi devi chiamare direttamente il metodo di estensione.

Penso che potresti usare il codice seguente,

        Func<dynamic, bool> check = x => x.Name == name;
        System.Linq.Enumerable.Where<dynamic>(this.Get(), check);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top