Copied to clipboard

Flag this post as spam?

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


  • Denis 47 posts 68 karma points
    Feb 25, 2014 @ 09:59
    Denis
    0

    9 Random items

    Hello, please i need help ...

    I have about 50 items in Model.Children, and i want to get 9 random items that will show to homepage.

    Every time when homepage is reloaded, i need to show different items,

    Please, how can i do that ?

  • Ismail Mayat 4511 posts 10092 karma points MVP 2x admin c-trib
    Feb 25, 2014 @ 10:11
    Ismail Mayat
    0

    Denis,

    Some code not fully tested apart from the shuffle method.

    var nodes = Model.Children.ToList();
    
    var random = nodes.Shuffle().Take(9);
    
        public static void Shuffle<T>(this IList<T> list)
        {
            var provider = new RNGCryptoServiceProvider();
            int n = list.Count;
            while (n > 1)
            {
                var box = new byte[1];
                do provider.GetBytes(box);
                while (!(box[0] < n * (Byte.MaxValue / n)));
                int k = (box[0] % n);
                n--;
                T value = list[k];
                list[k] = list[n];
                list[n] = value;
            }
        }
    
  • Denis 47 posts 68 karma points
    Feb 25, 2014 @ 10:57
    Denis
    0

    i have try but with problems ...

    Extension method must be defined in a non-generic static class,

    and if i dont use @using System.Collections; i have error Using the generic type 'System.Collections.Generic.IList' requires 1 type arguments

    @using System.Collections; @functions{

    public static void Shuffle(this IList list)
    {
        var provider = new RNGCryptoServiceProvider();
        int n = list.Count;
        while (n > 1)
        {
            var box = new byte[1];
            do provider.GetBytes(box);
            while (!(box[0] < n * (Byte.MaxValue / n)));
            int k = (box[0] % n);
            n--;
            T value = list[k];
            list[k] = list[n];
            list[n] = value;
        }
    }   
    

    }

  • Ismail Mayat 4511 posts 10092 karma points MVP 2x admin c-trib
    Feb 25, 2014 @ 11:18
    Ismail Mayat
    0

    denis,

    you can either create static class and put the method in there or update the metho signature and get rid of this keyword they call it like Shuffle(yourlist)

    Regards

    Ismail

  • Denis 47 posts 68 karma points
    Feb 25, 2014 @ 12:04
    Denis
    0

    Thank You, i will try ...

  • 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