Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Simon 12 posts 43 karma points
    Apr 29, 2013 @ 13:06
    Simon
    0

    Collections: OrderBy date property

    Hi Guys,

    Has anyone ever tried to order a collection by a date property that may or may not have a value? If I populate all the items with dates then there are no problems. If I set the date to null on some and there are at least two others with date values then  that is fine also. The error occurs if I have one or less date properties set in the collection.

    Any ideas?

    Simon

  • Charles Afford 1163 posts 1709 karma points
    Apr 29, 2013 @ 21:29
    Charles Afford
    0

    When you say a collection, what type is this?  Ienum, List?  When you say items in the collection what types are these?  I dont understand when the error is occuring :).  Charlie.

  • Simon 12 posts 43 karma points
    Apr 30, 2013 @ 01:17
    Simon
    0

    Yeah, sorry I should have really provided more info :)

    For example, I have a page which lists a node collection of a particular along with their properties. One of those properties is of date type, which may or may not contain a value, but would like to order by it as best as I can

  • Mike Chambers 636 posts 1253 karma points c-trib
    Apr 30, 2013 @ 10:14
    Mike Chambers
    0

    I had to revert back to linq to get around this..

    DynamicNode[] nodelist = homePageNode.DescendantsOrSelf().Items
                                    .Where(x => x.GetPropertyValue("hideInNavigation") != "1"
                                        && x.HasAccess
                                        && x.Level <= level
                                        && (DateTime.Parse(x.HasValue("ExpireDate", x.GetPropertyValue("fidusCMSExpireDate"), DateTime.Now.AddHours(1).ToString()).ToString()) > DateTime.Now)
                                        && (DateTime.Parse(x.HasValue("ReleaseDate", x.GetPropertyValue("fidusCMSReleaseDate"), DateTime.Now.AddHours(-1).ToString()).ToString()) < DateTime.Now)).ToArray();
    
  • Simon 12 posts 43 karma points
    Apr 30, 2013 @ 10:58
    Simon
    0

    Thanks for the reply Mike.

    How could this approach be used with the OrderBy() method though instead of inside a Where()?

    Simon 

  • Mike Chambers 636 posts 1253 karma points c-trib
    Apr 30, 2013 @ 11:03
    Mike Chambers
    0

    maybe something like 

    OrderBy(x => x.HasValue("ExpireDate", x.ExpireDate,DateTime.Now))

     

    eg if no date then use time now.. or your choice of how to deal with no set date.

  • Simon 12 posts 43 karma points
    Apr 30, 2013 @ 11:40
    Simon
    0

    Hmm thought you might say that ... trouble is I'm working within a Razor macro and am I right in thinking you cannot use the predicate within the OrderBy() and must provide a string representation? Correct me if I'm wrong; I'm still pretty new to the Umbraco world! 

  • Charles Afford 1163 posts 1709 karma points
    May 02, 2013 @ 21:11
    Charles Afford
    0

    i think thats correct but dont work with macros, will read up on them :)

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies