Запрос списка динамических объектов
-
27-10-2019 - |
Вопрос
Я использую массивный Чтобы получить конфигурацию таблицы в базе данных. Я хотел бы кэшировать конфигурацию, так как приложение получает значения от него все время.
Как только кэшируется, есть простой способ найти объект, где name = 'что -то'
Вот где вся таблица кэшируется.
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 или лямбда не допускаются в динамических объектах. Но что такое Следующее лучшее Способ вытащить этот объект из этого списка?
Решение
Вы не смогли писать выражение ламды напрямую как аргумент, но вы можете назначить его в вариабельную переменную. Также я считаю, что методы расширения не будут работать на динамических объектах, поэтому вам необходимо вызвать метод расширения напрямую.
Я думаю, что вы можете использовать код ниже,
Func<dynamic, bool> check = x => x.Name == name;
System.Linq.Enumerable.Where<dynamic>(this.Get(), check);