我正在使用massive来获取数据库中的配置表。我想缓存配置,因为应用程序始终从中获取值。
缓存后,有一种简单的方法可以找到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语句。但是从列表中拉出一个对象的次佳方法是什么?
答案 0 :(得分:1)
您不能将lamda表达式直接写为Where参数,但可以将其分配给Func变量。 另外我认为扩展方法不适用于动态对象,所以你必须直接调用扩展方法。
我认为您可以使用以下代码,
Func<dynamic, bool> check = x => x.Name == name;
System.Linq.Enumerable.Where<dynamic>(this.Get(), check);