Les types anonymes ayant des propriétés internes sont, à mon avis, une mauvaise décision de conception du framework .NET.
Voici un rapide et belle extension pour résoudre ce problème, c'est-à-dire en convertissant immédiatement l'objet anonyme en un ExpandoObject.
public static ExpandoObject ToExpando(this object anonymousObject)
{
IDictionary<string, object> anonymousDictionary = new RouteValueDictionary(anonymousObject);
IDictionary<string, object> expando = new ExpandoObject();
foreach (var item in anonymousDictionary)
expando.Add(item);
return (ExpandoObject)expando;
}
C'est très facile à utiliser :
return View("ViewName", someLinq.Select(new { x=1, y=2}.ToExpando());
Bien sûr, selon vous :
@foreach (var item in Model) {
<div>x = @item.x, y = @item.y</div>
}