0

我正在尝试按它们的第一个字母对一些节点进行排序,并将它们分页在 razor.(Umbraco) 中。但是在遇到 foreach 时会出现“对象不包含‘跳过’的定义”错误。

pagesToList = homeNode.Children.OrderBy("Name");

IEnumerable<DynamicNode> nl = @homeNode.Children.Items;
pagesToList = nl.Where(x => x.Name.StartsWith(currentLetter));

这是@pagesToList 输出的内容:

System.Linq.Enumerable+WhereListIterator`1[umbraco.MacroEngines.DynamicNode]


foreach(dynamic item in pagesToList.Skip(1){

}
4

1 回答 1

0

您可能使用了错误的属性。如果您只在homeNode下方的那些节点之后,则不要使用 Items 属性。另外,尽量不要投射你的物体。C# 有一个有效的 var 对象。假设 homeNode 是 DynamicNode,那么可能值得尝试以下操作:

pagesToList = homeNode.Children.OrderBy("Name").Where(x => x.Name.StartsWith(currentLetter));

然后你的代码应该可以工作。请注意,我们再次使用 var 是因为我们希望在编译时声明对象,而不是使用 dynamic,我们应该只在访问pagesToList 对象的一些未知或动态属性时才真正这样做):

foreach(pagesToList.Skip(1)中的var项目){

}

总而言之,您的代码似乎使用了属性“Items”,它为我们提供了一个 DynamicNode[] 数组,而不是一个 IEnumerable 对象。

我希望这能够帮到你。祝你好运!

于 2013-04-18T21:28:11.193 回答