C# 对象不包含';跳过';翁布拉科剃须刀

C# 对象不包含';跳过';翁布拉科剃须刀,c#,razor,umbraco,C#,Razor,Umbraco,我正试图按节点的第一个字母对其进行排序,并在razor中对其进行分页。(Umbraco)。但当对象命中foreach时,会出现“对象不包含“跳过”的定义”错误 pagesToList = homeNode.Children.OrderBy("Name"); IEnumerable<DynamicNode> nl = @homeNode.Children.Items; pagesToList = nl.Where(x => x.Name.StartsWith(currentLe

我正试图按节点的第一个字母对其进行排序,并在razor中对其进行分页。(Umbraco)。但当对象命中foreach时,会出现“对象不包含“跳过”的定义”错误

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

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

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

pagesToList = homeNode.Children.OrderBy("Name").Where(x => x.Name.StartsWith(currentLetter)); pagesToList=homeNode.Children.OrderBy(“Name”)。其中(x=>x.Name.StartsWith(currentLetter)); 那么你的代码应该可以工作了。请注意,我们再次使用var是因为我们希望在编译时声明对象,而不是使用dynamic,我们应该只在访问一些未知的或动态的属性(pagesToList对象)时才这样做:

foreach(页面列表中的变量项。跳过(1)){ } 总之,您的代码似乎使用了属性“Items”,它为我们提供了一个DynamicNode[]数组,而不是IEnumerable对象


我希望这对你有帮助。祝你好运

但是,感谢您,当我使用此命令时,出现了一个“如果不首先将lambda表达式强制转换为委托或表达式树类型,则无法将其用作动态调度操作的参数”错误。问题不在于此。where语句返回dynamicnodelist,而as.StartWith返回泛型列表吗? pagesToList = homeNode.Children.OrderBy("Name").Where(x => x.Name.StartsWith(currentLetter)); foreach(var item in pagesToList.Skip(1)){ }