c# - 只获取第一个项目与 SyndicateItem/foreach 的替代品

标签 c# linq for-loop foreach rss

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

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

显然,我想过在末尾添加一个中断,但这绝对是我将来需要找到答案的问题,我希望比这更干净地解决它。

因此,如有任何帮助,我们将不胜感激,谢谢!

最佳答案

试试这个:

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

OrderByDescending将按日期降序排列项目并取 FirstOrDefault项目将获取具有最高发布日期的项目(最新项目)

SyndicateItemPublishDate属性(property)

了解更多关于Linq的信息创建此类查询非常有用。

编辑:

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

var latest = feed.Items.LastOrDefault();

编辑2:

处理空列表,例如:

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

关于c# - 只获取第一个项目与 SyndicateItem/foreach 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19295370/

相关文章:

java - 循环的简写是否缓存可迭代的引用?

c# - 异步任务配置中未抛出异常

c# - 当我选中复选框时,如何更改特定的行样式? C# ASP.NET

c# - 无法将类型 System.Collections.Generic.IEnumerable 隐式转换为 System.Collections.Generic.List

c# - 在 Select 和 Where 调用中重用 Linq to Entities 的 Expression<Func<T, TResult>

csv - 批处理 for 循环、csv 解析和正确输出到文件的问题

javascript - 在 Coffeescript 中强制迭代 for 循环

c# - .Net 3.5 VS 2008 无效 token 'out' 错误

c# - 错误 "Class does not contain a definition for method"但方法存在

c# - 添加新记录 var LINQ