J’ai créé le modèle de vue suivant pour une application MVC. Ce que j’aimerais faire, c’est d’en faire une classe IEnumerable
afin de pouvoir parcourir les données de ma page à l’aide d’une instruction foreach
.
public class EstimateDetailsModel { public ssortingng dma { get; set; } public ssortingng callsign { get; set; } public ssortingng description { get; set; } }
Si cela est pertinent, voici la requête Linq correspondante dans mon référentiel qui instancie la classe EstimatesDetailsModel
:
public IEnumerable GetEstimateDetails(int id) { var estimateDetails = from e in db.Estimates join es in db.EstimateStations on e.EstimateID equals es.EstimateID join s in db.Stations on es.StationID equals s.StationID join m in db.Markets on s.MarketID equals m.MarketID where e.EstimateID == 1 select new EstimateDetailsModel { dma = m.DmaName, callsign = s.CallSign, description = s.StationDescription }; return estimateDetails; }
Peut-être cherchez-vous quelque chose comme ceci:
public class EstimateDetailsModel : IEnumerable { public ssortingng Dma { get; set; } public ssortingng Callsign { get; set; } public ssortingng Description { get; set; } public IEnumerator GetEnumerator() { yield return Dma; yield return Callsign; yield return Description; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); } }
(J’ai mis les propriétés en majuscule, ce qui est le style normal.)
On dirait que vous essayez peut-être de faire quelque chose comme ça?
public class EstimateDetailsModel: List { public class EstimateDetail { public ssortingng dma { get; set; } public ssortingng callsign { get; set; } public ssortingng description { get; set; } } }
Pourquoi ne pas simplement utiliser une propriété dans EstimateDetailsModel qui expose les EstimateDetails du référentiel? Quelque chose comme ça, en supposant que vous ayez une référence de référentiel dans le modèle:
public class EstimateDetailsModel { public int EstimateID { get; set; } public IEnumerable EstimateDetails { return Repository.GetEstimateDetails(this.EstimateID); } }
Avec reflection, il est possible d’automatiser l’énumération des noms et valeurs de propriétés de tout object (voir cette question , entre autres ). Mais c’est parfois exagéré. Je suppose que vous êtes intéressé à voir EstimateDetailsModel
comme un dictionnaire. Je suggère ce qui suit:
public class EstimateDetailsModel : IEnumerable> { public ssortingng Dma { get; set; } public ssortingng CallSign { get; set; } public ssortingng Description { get; set; } public IEnumerator> GetEnumerator() { yield return new KeyValuePair("Dma", Dma); yield return new KeyValuePair("CallSign", CallSign); yield return new KeyValuePair("Description", Description); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }