Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试按C#中返回的列表上的日期排序(Umbraco 4.8.1)_C#_.net_Linq_Api_Umbraco - Fatal编程技术网

尝试按C#中返回的列表上的日期排序(Umbraco 4.8.1)

尝试按C#中返回的列表上的日期排序(Umbraco 4.8.1),c#,.net,linq,api,umbraco,C#,.net,Linq,Api,Umbraco,我正试图从新闻部分中提取最新的5篇文章,然后按文章日期对它们进行排序 我已经成功地获得了5篇文章并显示了它们,但是OrderBy没有按预期工作。我需要根据节点上名为“NewsDate”的属性对它们进行排序,该节点是一个日期选择器 protected void Page_Load(object sender, EventArgs e) { var currentNode = Node.GetCurrent(); var nodeTypeAlias = cur

我正试图从新闻部分中提取最新的5篇文章,然后按文章日期对它们进行排序

我已经成功地获得了5篇文章并显示了它们,但是OrderBy没有按预期工作。我需要根据节点上名为“NewsDate”的属性对它们进行排序,该节点是一个日期选择器

protected void Page_Load(object sender, EventArgs e)
    {
        var currentNode = Node.GetCurrent();
        var nodeTypeAlias = currentNode.NodeTypeAlias;

        if (nodeTypeAlias == "NewsMasterPage")
        {
            var nodes = FindChildren(currentNode, t => t.NodeTypeAlias.Equals("NewsArticle"));
            var nodesOutput = nodes.OrderBy(n => n.GetProperty("NewsDate"));

            newsRepeater.DataSource = nodesOutput;
            newsRepeater.DataBind();
        }

    }

    private static List<Node> FindChildren(Node currentNode, Func<Node, bool> predicate)
    {
        List<Node> result = new List<Node>();

        var nodes = currentNode
            .Children
            .OfType<Node>()
            .Where(predicate).Take(4);
        if (nodes.Count() != 0)
            result.AddRange(nodes);

        foreach (var child in currentNode.Children.OfType<Node>())
        {
            nodes = FindChildren(child, predicate);
            if (nodes.Count() != 0)
                result.AddRange(nodes);
        }
        return result;
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
var currentNode=Node.GetCurrent();
var nodeTypeAlias=currentNode.nodeTypeAlias;
if(nodeTypeAlias==“NewsMasterPage”)
{
var nodes=FindChildren(currentNode,t=>t.NodeTypeAlias.Equals(“新闻文章”);
var nodesOutput=nodes.OrderBy(n=>n.GetProperty(“NewsDate”);
newsRepeater.DataSource=节点输出;
newsRepeater.DataBind();
}
}
私有静态列表FindChildren(节点currentNode,Func谓词)
{
列表结果=新列表();
变量节点=当前节点
儿童
第()类
.Where(谓语)。Take(4);
如果(nodes.Count()!=0)
结果.AddRange(节点);
foreach(currentNode.Children.OfType()中的var child)
{
节点=FindChildren(子节点,谓词);
如果(nodes.Count()!=0)
结果.AddRange(节点);
}
返回结果;
}

我假设这是因为
GetProperty(string)
返回一个对象,而不是实际的
DateTime
实例。我相信,如果您创建一个过渡投影,然后像这样选择元素,您应该能够进行排序:

nodes.Select(x => new { Node = x, NewsDate = /* Convert x.GetProperty("NewsDate") to DateTime */ })
     .OrderBy(x => x.NewsDate)
     .Select(x => x.Node)