¿Convertir / convertir IEnumerable <T> a IEnumerable <U>?

Lo siguiente cumple pero en tiempo de ejecución lanza una excepción. Lo que estoy tratando de hacer es lanzar una clase PersonWithAge a una clase de Person. ¿Cómo hago esto y en qué consiste el trabajo?

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class PersonWithAge
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        IEnumerable<PersonWithAge> pwa = new List<PersonWithAge>
        {
            new PersonWithAge {Id = 1, Name = "name1", Age = 23},
            new PersonWithAge {Id = 2, Name = "name2", Age = 32}
        };

        IEnumerable<Person> p = pwa.Cast<Person>();

        foreach (var i in p)
        {
            Console.WriteLine(i.Name);
        }
    }
}

EDITAR: Por cierto, PersonWithAge siempre contendrá las mismas propiedades que Person más un par más.

Editar 2 Lo siento, pero debería haberlo aclarado un poco, digamos que tengo dos vistas de db en una base de datos que contiene las mismas columnas pero la vista 2 contiene 1 campo adicional. Las entidades de mi vista de modelo son generadas por una herramienta que imita las vistas de la base de datos. Tengo una vista parcial de MVC que se hereda de una de las entidades de clase, pero tengo más de una forma de capturar datos ...

No estoy seguro de si esto ayuda, pero significa que no puedo hacer que la persona sea heredada de la persona.

Respuestas a la pregunta(6)

Su respuesta a la pregunta