按节点列表的Int属性排序 - Umbraco Razor

时间:2012-11-14 16:20:02

标签: razor umbraco

我正在尝试按数字属性“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");

3 个答案:

答案 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()调用或者你需要的任何内容。