Take the community feedback survey now.
                AI OnAI Off
            
        Take the community feedback survey now.
 
                Interesting question! This is what I came up with:
public IEnumerable<T> GetAllBlocksOfTypeFromContentAreas<T>(PageData page) where T : BlockData
{
    var results = new List<T>();
    if (page == null) return results;
    foreach (var property in page.Property)
    {
        var contentArea = property.Value as ContentArea;
        if (contentArea == null)
            continue;
        foreach (var contentAreaItem in contentArea.Items)
        {
            T block;
            if (_contentRepository.Service.TryGet(contentAreaItem.ContentLink, out block))
                results.Add(block);
        }
    }
    return results;
}It does require you to load each piece of content from each ContentArea with the TryGet-call, so it might get a bit heavy performance wise if you have many content areas and many items in those content areas.
Edit: It was hard to name the method in a short and descriptive way. :P
Edit 2: 
Depending on where you're doing this operation you might want personalization and access rights to be considered for picking which content you want to show a specific visitor.
In that case use:
foreach (var contentAreaItem in contentArea.FilteredItems)instead of
foreach (var contentAreaItem in contentArea.Items) 
    
    
    
Hi peeps!,
Problem:
I have a PageData object.
1. Look for specific block-type in contentarea, on whichever page (PageData) that may have {n} number of contentarea.
2. Parse block(s) from contentarea(s) to IEnumerable (if possible, else retrieve content reference) 
Finally, use blocks to create my viewmodels.
Suggestions?
Br,
Jens D.