繁体   English   中英

对象不包含“跳过” Umbraco剃刀的定义

[英]object does not contain a definition for 'Skip' Umbraco razor

我正在尝试按其首字母对某些节点进行排序,并用剃刀将其分页。(Umbraco)。 但是,在碰到foreach时,出现“对象不包含'Skip'的定义”错误。

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){

}

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

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

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

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

}

综上所述,您的代码似乎使用的是“ Items”属性,该属性为我们提供了DynamicNode []数组,而不是IEnumerable对象。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM