namespace mySillyExample { public class BookShelf { public Shelf[] myShelves{get; set;} } public class Shelf { public Book[] booksOnThisShelf{get; set;} } public class Book { public string Title {get; set;}; public string Author{get; set;}; public string ISBN {get; set;}; } } //ViewModelBase should be a base class that implements INotifyPropertyChanged public class MyViewModel : ViewModelBase { public readonly IDataProvider _provider; public MyViewModel(IDataProvider provider) { _provider = provider ?? (some default provider); } public IList Titles { get { var q = from shelves in _provider.GetBookShelves() from books in shelves.booksOnThisShelf select books.Title; return q as List; } } }