У меня есть Dictionary<string, bool>
, где ключ - идентификатор и значение элемента управления - это видимый статус для установки:
var dic = new Dictionary<string, bool>
{
{ "rowFoo", true},
{ "rowBar", false },
...
};
Некоторые из элементов управления могут быть null
, т.е. dic.ToDictionary(k => this.FindControl(k), v => v)
не будет работать, поскольку ключ не может быть нулевым.
Я могу сделать следующее:
dic
.Where(p => this.FindControl(p.Key) != null)
.ForEach(p => this.FindControl(p.Key).Visible = p.Value); // my own extension method
но для каждого ключа это вызовет FindControl()
дважды.
Как избежать двойного поиска и выбирать только те ключи, для которых существует соответствующий элемент управления?
Что-то вроде:
var c= FindControl(p.Key);
if (c!= null)
return c;
но с использованием LINQ.