diff --git a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs index 048f16f101..a018dfec0c 100644 --- a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs +++ b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNodeList.cs @@ -30,6 +30,12 @@ namespace umbraco.MacroEngines list.ForEach(node => node.ownerList = this); Items = list; } + public DynamicNodeList(IOrderedEnumerable items) + { + List list = items.ToList(); + list.ForEach(node => node.ownerList = this); + Items = list; + } public DynamicNodeList(IEnumerable items) { List list = items.ToList().ConvertAll(n => new DynamicNode(n)); diff --git a/umbraco.MacroEngines.Juno/RazorDynamicNode/Grouping.cs b/umbraco.MacroEngines.Juno/RazorDynamicNode/Grouping.cs index 13600e165c..7cedd0fab6 100644 --- a/umbraco.MacroEngines.Juno/RazorDynamicNode/Grouping.cs +++ b/umbraco.MacroEngines.Juno/RazorDynamicNode/Grouping.cs @@ -14,14 +14,15 @@ namespace umbraco.MacroEngines public IEnumerator GetEnumerator() { - return Elements.GetEnumerator(); + DynamicNodeList temp = new DynamicNodeList(Elements.Cast()); + return (IEnumerator)temp.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return (IEnumerator)GetEnumerator(); } - public IOrderedEnumerable OrderBy(string ordering) + public DynamicNodeList OrderBy(string ordering) { bool descending = false; if (ordering.IndexOf(" descending", StringComparison.CurrentCultureIgnoreCase) >= 0) @@ -37,21 +38,21 @@ namespace umbraco.MacroEngines if (!descending) { - return Elements.OrderBy(item => + return new DynamicNodeList(Elements.OrderBy(item => { object key = null; (item as DynamicObject).TryGetMember(new DynamicQueryableGetMemberBinder(ordering, false), out key); return key; - }); + }).Cast()); } else { - return Elements.OrderByDescending(item => + return new DynamicNodeList(Elements.OrderByDescending(item => { object key = null; (item as DynamicObject).TryGetMember(new DynamicQueryableGetMemberBinder(ordering, false), out key); return key; - }); + }).Cast()); } } }