Cast/Convertir IEnumerable<T> IEnumerable<U>?

La suite est conforme, mais au moment de l'exécution déclenche une exception. Ce que je suis en train de faire est de jeter une classe PersonWithAge à une catégorie de Personne. Comment dois-je faire et qu'est-ce que le travail?

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);
        }
    }
}

EDIT: Par la voie PersonWithAge contiendra toujours les mêmes propriétés que Personne, plus un couple de plus.

EDIT 2 Désolé les gars mais j'aurais fait un peu plus clair, disons que j'ai deux db vues dans une base de données qui contient les mêmes colonnes, mais la vue 2 contient 1 champ supplémentaire. Mon modèle afficher les entités sont générés par un outil qui imite les vues de base de données. J'ai un MVC vue partielle qui hérite de la classe d'entités, mais j'ai plus d'une façon de s'emparer des données...

Ne sais pas si cela aide, mais cela signifie que je ne peux pas faire personWithAge hériter de personne.

OriginalL'auteur Rippo | 2009-11-21