【问题标题】:Grab a List item based on newest datetime根据最新的日期时间抓取列表项
【发布时间】:2013-03-02 19:24:16
【问题描述】:

我正在使用此代码抓取文章。

List<view_M04FrontpagesEntity> fList = new view_M04FrontpagesService().GetByCategoryId(0);

var article = new M02ArticlesService().GetById(fList.First<view_M04FrontpagesEntity>().M02ArticleId);

我想用最新的article.UpdatedDate 抓取文章,如何使用 linq 或其他方法做到这一点?

【问题讨论】:

    标签: c# asp.net linq datetime


    【解决方案1】:

    使用MaxBy方法提供我的MoreLinq

    List<view_M04FrontpagesEntity> fList = new view_M04FrontpagesService().GetByCategoryId(0);
    
    var newest = fList.MaxBy(article => article.UpdatedDate);
    

    【讨论】:

    • BCL 中严重缺失。 +1
    • @voo 不,在 BCL 中只有 Max 可以传递选择器,但它会返回最大的 UpdatedDate,但不是 文章 与greates UpdatedDate。您必须通过 NuGet 包安装 MoreLinq,或者只是从他们的站点安装普通 dll。
    【解决方案2】:

    您可以在 LInQ 中使用 OrderByDescending。

    var query = myList.Where(x =>x=="somePredicate")
                      .OrderByDescending(x => x.UpdatedDate ).FirstOrDefault();
    

    返回序列的第一个元素,如果序列不包含任何元素,则返回默认值。

    【讨论】:

      【解决方案3】:
      var first = articles.OrderByDescending( a => a.UpdateDate ).First();
      

      一般来说,就是这样。您需要自己将其转移到您的代码中,因为您发布的代码都没有帮助。

      【讨论】:

      • 你刚刚选择了最旧的文章
      • @nvoigt 不需要降序吗?
      【解决方案4】:
      var result = (from article in fList
              orderby article.UpdatedDate descending
              select article).First();
      

      【讨论】:

        【解决方案5】:

        这是按预期工作的。

        var m04FrontpagesEntities = new view_M04FrontpagesService().GetByCategoryId(0).ToList().Select(x => new M02ArticlesService().GetById(x.M02ArticleId)).ToList().OrderByDescending(x => x.UpdatedDate); ;
        var article = m04FrontpagesEntities.First();
        

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2021-03-06
          • 1970-01-01
          • 2016-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多