Frage

Ich verwende massiv , um die Konfigurationstabelle in der Datenbank abzurufen.Ich möchte die Konfiguration zwischenspeichern, da die App ständig Werte von ihr erhält.

Einmal zwischengespeichert, gibt es eine einfache Möglichkeit, das Objekt zu finden, bei dem name= 'etwas'

Hier wird die gesamte Tabelle zwischengespeichert.

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

Hier möchte ich einen Datensatz aus dieser Methode ziehen

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

Ich weiß, dass Linq- oder Lambda-Anweisungen in dynamischen Objekten nicht zulässig sind.Aber was ist der nächstbeste Weg, um dieses eine Objekt aus dieser Liste zu ziehen?

War es hilfreich?

Lösung

Sie konnten den Lamda-Ausdruck nicht direkt als Where-Argument schreiben, sondern einer Func-Variablen zuweisen. Ich glaube auch, dass Erweiterungsmethoden für dynamische Objekte nicht funktionieren würden, daher müssen Sie die Erweiterungsmethode direkt aufrufen.

Ich denke, Sie könnten den folgenden Code verwenden,

        Func<dynamic, bool> check = x => x.Name == name;
        System.Linq.Enumerable.Where<dynamic>(this.Get(), check);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top