1

我正在尝试按数字属性“成本”对 DynamicNodeList 进行排序。我在这里尝试了很多不同的方法,但完全不知所措:

var nodes = Model.AncestorOrSelf(1).Descendants().Where("NodeTypeAlias.Equals(\"Event\")").Where("Visible");

nodes = nodes.OrderBy("Int32.Parse(cost.Value)");

给我错误:“Func`2”类型中不存在属性或字段“值”

我有一种感觉,这和我得到的一样接近!有人对此有任何线索吗?

编辑:

好的,我通过更改 NodeList 解决了这个问题:

var nodes = Model.AncestorOrSelf(1).Descendants().Where("NodeTypeAlias.Equals(\"Event\")").Where("Visible").Where("cost > 0");
4

3 回答 3

2
nodes = nodes.OrderBy("cost");

...应该工作得很好。

有关更多信息,请参阅Umbraco Razor 功能演练 - 第 4 部分OrderBy()

于 2012-11-14T18:18:31.647 回答
0

你可以试试

Dictionary<DynamicNode, int> myVar = new Dictionary<DynamicNode, int>();
foreach(var node in nodes)
{
    myVar.Add(node,node.GetPropertyValue("cost");
}

然后排序。这是我能想到的唯一方法。

于 2012-11-14T16:36:57.853 回答
0

在对不止一个项目或不简单的东西进行排序时,我遇到了问题。在这些情况下,我将其转换为 List 或 DynamicNode 对象,并将 Sort 方法与委托一起使用。

像这样的东西:

possibleListings.Sort(delegate(DynamicNode x, DynamicNode y)
{       
  ... perform sorting logic
});

然后,您可以在委托中进行 Int32.TryParse() 调用或您需要的任何操作。

于 2012-11-14T21:05:40.710 回答