Linq 如何将包含集合的匿名类型传递给Razor视图?
我试图将一个匿名类型集合传递给Razor视图引擎,该集合本身就有一个类型集合 我使用以下扩展将动态对象传递给视图Linq 如何将包含集合的匿名类型传递给Razor视图?,linq,razor,anonymous-types,Linq,Razor,Anonymous Types,我试图将一个匿名类型集合传递给Razor视图引擎,该集合本身就有一个类型集合 我使用以下扩展将动态对象传递给视图 public static ExpandoObject ToExpando(this object anonymousObject) { IDictionary<string, object> anonymousDictionary = new RouteValueDictionary(anonymousObject); IDic
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;
}
但是,我未能通过更复杂的类型,例如:
mylinqstatement.GroupBy(y => y.foo).Select(x =>
new { foo = x.key, bar = x.Select(y => y.b) }.ToExpando());
我已经多次尝试重写我展示的最简单的梯形图语句,但是我想要的属性y.b的值在视图中永远无法访问
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;
}
任何帮助都将不胜感激。我回答了自己的问题
mylinqstatement.GroupBy(y => y.foo).Select(x => new { foo = x.key,
bar = x.Select(y => new { someProperty = y.b) }.ToExpando())}.ToExpando());
在视图中
@foreach (var item in Model)
{
@item.foo
foreach (var barItem in item.bar) //<--- notice it's not simply 'in item'.
{
@barItem .someProperty
}
}
希望这能帮助某人避免不必要的头痛。请将您的答案放在答案中,而不是作为对您问题的编辑。这会让我在几个小时内无法回答您的问题。我将在它解锁该能力时执行此操作。