Inefficient code inside of getter? I have two lists of the same type and I want to be able view a list of both lists:

    public List&lt;Page&gt; HeaderPages;
    public List&lt;Page&gt; SurveyPages;

    public IReadOnlyList&lt;Page&gt; AllPages 
    { 
        get 
        {
            List&lt;Page&gt; allPages = new List&lt;Page&gt;();
            allPages.AddRange(this.HeaderPages);
            allPages.AddRange(this.SurveyPages);
            return allPages;
        } 
    }


I think it is very inefficient to keep creating a new list object each time I want to get AllPages, so I thought I could store a private allPages list.  But then I thought if I am in the class, I would have to remember to use the public AllPages rather than the private allPages - which may not be up-to-date.

Any elegant solutions?
If you want to keep the two lists (otherwise check Hackworth's answer), the best solution would be to use LINQ extensions

public IEnumerable&lt;Page&gt; AllPages 
{ 
    get 
    {
        return HeaderPages.Concat(SurveyPages);
    } 
}


This way you do not create any unnecessary collections. It forces you to use IEnumerable&lt;Page&gt; though, but in my opinion it is a good thing.