2

我正在使用海量获取数据库中的配置表。我想缓存配置,因为应用程序一直从中获取值。

缓存后,是否有一种简单的方法可以找到 name = 'something' 的对象

这里是整个表被缓存的地方。

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

这是我想从该方法中提取一条记录的地方

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

我知道动态对象中不允许使用 linq 或 lambda 语句。但是将那个对象从该列表中拉出的下一个最佳方法是什么?

4

1 回答 1

1

您不能将 lamda 表达式直接写为 Where 参数,但可以将其分配给 Func 变量。另外我相信扩展方法不适用于动态对象,因此您必须直接调用扩展方法。

我想你可以使用下面的代码,

        Func<dynamic, bool> check = x => x.Name == name;
        System.Linq.Enumerable.Where<dynamic>(this.Get(), check);
于 2012-01-12T01:28:35.153 回答