只获得带有SyndicationItem / foreach替代品的第一个项目

时间:2013-10-10 12:09:07

标签: c# linq for-loop foreach rss

我正在学习RSS提要,我遇到了一个我以前从未遇到的问题,这可能是一个非常简单的答案,但我在Google上找不到任何东西。我正在使用SyndicationItem从RSS提要中获取XML项目,但是当您使用foreach时,它会获取每个项目,我只想获取最新项目 - 下面的代码片段。

    //Add required parsing in here
    foreach (SyndicationItem item in feed.Items)
    {
        //put data you want parsed
    }

显然我想到最后只是添加一个休息时间,但这绝对是我将来需要找到答案的东西,我想解决它比这更清洁。

所以任何帮助都会受到赞赏,谢谢!

1 个答案:

答案 0 :(得分:2)

试试这个:

var latest = feed.Items.OrderByDescending(x=>x.PublishDate).FirstOrDefault();

OrderByDescending将按日期降序订购商品,并且FirstOrDefault商品将获得具有最高发布日期的商品(最新商品)

SyndicationItemPublishDate属性

详细了解Linq创建此类查询非常有用。

编辑:

如果按PublishDate排序,则可以使用LastOrDefault方法,但如果您不是100%确定,最好先对其进行排序。

var latest = feed.Items.LastOrDefault();

EDIT2:

处理空列表,如:

if(!feed.Items.Any)
{
    //alert about no elements
}