Comment accéder à la propriété count d'un type dynamique en C # 4.0?

J'ai du suivre une méthode qui retourne un objet dynamique qui représente une IEnumerable<'a> ('a=type anonyme) :

    public dynamic GetReportFilesbyStoreProductID(int StoreProductID)
    {
        Report report = this.repository.GetReportByStoreProductID(StoreProductID);

        if (report == null || report.ReportFiles == null)
        {
            return null;
        }

        var query = from x in report.ReportFiles
                    orderby x.DisplayOrder
                    select new { ID = x.RptFileID, Description = x.LinkDescription, File = x.LinkPath, GroupDescription = x.ReportFileGroup.Description };

        return query;
    }

Je veux être en mesure d'accéder à la Count la propriété de ce IEnumerable type anonyme. J'essaye d'accéder à la méthode ci-dessus en utilisant le code suivant et c'est un échec:

        dynamic Segments = Top20Controller.GetReportFilesbyStoreProductID(StoreProductID");

        if (Segments.Count == 0)  //<== Fails because object doesn't contain count.
        {
            ...
        }
  • Comment dynamic mot clé fonctionne?
  • Comment puis-je accéder à la Count propriété de la IEnumerable type anonyme?
  • Est-il une manière que je peux utiliser ce type anonyme ou dois-je créer un objet personnalisé afin que je puisse passer à une fortement typées IEnumerable<myObject> au lieu de dynamic?

Je préfère ne pas le faire si je peut que cette méthode n'est appelée que dans un seul endroit et de la création d'un jeter de l'objet semble exagéré.

source d'informationauteur Rodney