Fixed IsHelpers on IGrouping (DynamicNode.GroupBy)

This commit is contained in:
agrath
2011-12-04 15:07:58 -13:00
parent 95e985b96d
commit 3b0f2804fd
2 changed files with 13 additions and 6 deletions

View File

@@ -30,6 +30,12 @@ namespace umbraco.MacroEngines
list.ForEach(node => node.ownerList = this);
Items = list;
}
public DynamicNodeList(IOrderedEnumerable<DynamicNode> items)
{
List<DynamicNode> list = items.ToList();
list.ForEach(node => node.ownerList = this);
Items = list;
}
public DynamicNodeList(IEnumerable<DynamicBackingItem> items)
{
List<DynamicNode> list = items.ToList().ConvertAll(n => new DynamicNode(n));

View File

@@ -14,14 +14,15 @@ namespace umbraco.MacroEngines
public IEnumerator<T> GetEnumerator()
{
return Elements.GetEnumerator();
DynamicNodeList temp = new DynamicNodeList(Elements.Cast<DynamicNode>());
return (IEnumerator<T>)temp.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)GetEnumerator();
}
public IOrderedEnumerable<T> 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<DynamicNode>());
}
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<DynamicNode>());
}
}
}