Générique LINQ fonction - SelectMany avec la sélection Func comme paramètre

J'ai une classe avec de nombreux tableaux de chaîne. J'aimerais avoir une fonction générique qui peut me faire une unique List<string> pour une propriété donnée. Exemple:

public class Zoo 
{    
  string Name { get; set;}
  string[] Animals { get; set;}
  string[] Zookeepers { get; set;}
  string[] Vendors { get; set;}
}

J'aimerais avoir une fonction générique qui va me faire un distinct List<string> des Animaux dans la Liste? Je veux que ce soit générique, donc je peux également obtenir une liste distincte de gardiens de zoo et les Fournisseurs.

J'ai essayé ceci, mais il ne compile pas:

public static List<string> GetExtendedList(Func<Zoo, string[]> filter)
{
        var Zoos = QueryZoos(HttpContext.Current);
        return Zoos.Where(z => z.Type == "Active")
            .SelectMany(filter)
            .Distinct()
            .OrderBy(s => s);
    }

Note: ceci est lié à deux questions que j'ai demandé avant, mais je vais avoir de la difficulté à la fusion de l'information. Je l'avais déjà demandé comment requête à l'aide de SelectMany (DONC 1229897) et séparément demandé comment écrire une fonction générique qui obtient une liste à l'aide de Sélectionner plutôt que SelectMany (DONC 1278989).

OriginalL'auteur Jon Galloway | 2009-09-03