在DateTime之后排序IENumerable

时间:2016-01-18 22:55:29

标签: c# sorting ienumerable

我有以下

var path = HttpContext.Current.Server.MapPath("~/App_Data/WorldNews.xml");
        var feedXml = XDocument.Load(path);


        IEnumerable<NewsItem> feeds = from feed in feedXml.Descendants("item")
                    select new NewsItem
                    {
                        Title = feed.Element("title").Value,
                        Link = feed.Element("link").Value,
                        Description = Regex.Match(feed.Element("description").Value, @"^.{1,180}\b(?<!\s)").Value,
                        Date = Convert.ToDateTime(feed.Element("pubDate").Value)

                    };

如何在&#34;日期&#34;?

之后对此进行排序

1 个答案:

答案 0 :(得分:1)

您可以使用let存储转换后的日期。

IEnumerable<NewsItem> feeds = 
    from feed in feedXml.Descendants("item")
    let date = Convert.ToDateTime(feed.Element("pubDate").Value)
    orderby date
    select new NewsItem
    {
        Title = feed.Element("title").Value,
        Link = feed.Element("link").Value,
        Description = Regex.Match(feed.Element("description").Value, @"^.{1,180}\b(?<!\s)").Value,
        Date = date
    };

要在创建后对其进行排序,您可以执行此操作。

feeds = feeds.OrderBy(f => f.Link).ToArray();

我添加.ToArray()的原因是没有它,你将实例化一系列查询,每个查询的计算成本越来越高,每次都会回到xml解析。