我正在尝试按数字属性“cost”对DynamicNodeList进行排序。我在这里试过很多不同的方法,但我完全不知所措:
var nodes = Model.AncestorOrSelf(1).Descendants().Where("NodeTypeAlias.Equals(\"Event\")").Where("Visible");
nodes = nodes.OrderBy("Int32.Parse(cost.Value)");
给我错误:'Func`2'
类型中没有属性或字段'Value'我有一种感觉,这就像我已经接近了!有没有人有这方面的线索?
编辑:
好的,我通过更改NodeList解决了这个问题:
var nodes = Model.AncestorOrSelf(1).Descendants().Where("NodeTypeAlias.Equals(\"Event\")").Where("Visible").Where("cost > 0");
答案 0 :(得分:2)
nodes = nodes.OrderBy("cost");
......应该可以正常工作。
有关OrderBy()
的详细信息,请参阅Umbraco Razor Feature Walkthrough – Part 4。
答案 1 :(得分:0)
你可以尝试
Dictionary<DynamicNode, int> myVar = new Dictionary<DynamicNode, int>();
foreach(var node in nodes)
{
myVar.Add(node,node.GetPropertyValue("cost");
}
然后排序。这是我能想到的唯一方式。
答案 2 :(得分:0)
我在排序超过单个项目或不简单的事情时遇到了问题。在这些情况下,我将其转换为List或DynamicNode对象,并将Sort方法与委托一起使用。
这样的事情:
possibleListings.Sort(delegate(DynamicNode x, DynamicNode y)
{
... perform sorting logic
});
然后你可以在委托中进行Int32.TryParse()调用或者你需要的任何内容。