Попробуйте это:
from TabSection t in content.ChildControls
кроме того, даже если бы это не было доступно (или для различного, будущего сценария можно встретиться), Вы не были бы ограничены преобразованием всего к Спискам. Преобразование в Список вызывает оценку запроса на месте. Но если бы Вы удаляющий вызов ToList, Вы могли бы работать с типом IEnumerable, который продолжил бы задерживать выполнение запроса, пока Вы на самом деле не выполняете итерации или храните в реальном контейнере.
Если вы действительно хотите создать ObservableDictionary
, я бы предложил создать класс, который реализует как IDictionary
, так и INotifyCollectionChanged
. Вы всегда можете использовать Словарь
внутри для реализации методов IDictionary
, чтобы вам не пришлось заново реализовывать его самостоятельно.
Поскольку вы полностью знаете, когда внутренний Словарь
изменяется, вы можете использовать эти знания для реализации INotifyCollectionChanged
.
Вы не можете написать что-то, что сделало бы чей-то словарь, не говоря уже о IDictionary, наблюдаемым без использования какой-либо формы рефлексии. Проблема в том, что Dictionary может быть подклассом с дополнительными мутаторами (например, Sort или Filter, или чем-то еще), которые не вызывают Add и Remove и в результате обходят ваши события.
Я считаю, что существуют структуры генерации кода, позволяют делать подобные вещи, но я с ними не знаком.
ObservableDictionary (Of TKey, TValue)
- VB.NET ObservableDictionary
- C #