Presents sequences (instances of IEnumerable or IEnumerable) as logical aggregations of data as an alternative to the traditional view of a persistent collection. Demonstrates how LINQ operators treat both persisted and non-persisted sequences equally (even infinite sequences). Introduces the LINQ Concat<> operator and explains how its result can be used like a database view. Shows how to bind controls to instances of IEnumerable using a list wrapper, as well as explaining the advantages presented by doing so. Continue reading

Regular Windows Forms data-binding can only bind to the properties directly belonging to each list item. This post explains how to bind to properties of properties (and so on, recursively) by creating a special collection class that exposes nested properties using ITypedList and PropertyDescriptor. You can use AggregationBindingList as a data source for the ComboBox, ListBox and DataGridView controls. Continue reading