Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Shuffles the specified list

namespace DeltaGroup.WheelOfJeopardy.Util {     using System;     using System.Collections.Generic;     using System.Windows;     using System.Windows.Media;     public static class Extensions     {         #region Methods         /// <summary>         /// Shuffles the specified list.         /// </summary>         /// <typeparam name="TE">The type of the E.</typeparam>         /// <param name="list">The list.</param>         /// <returns></returns>         public static List<TE> Shuffle<TE>(this List<TE> list)         {             // so we dont remove from original             var temp = new List<TE>(list);              var result = new List<TE>();             var r = new Random();             while (temp.Count > 0)             {                 var randomIndex = r.Next(0, temp.Count);                 result.Add(temp[randomIndex]);                 //remove to avoid duplicates                 temp.RemoveAt(randomIndex);              }             return result;         }         /// <summary>         /// Toes the int.         /// </summary>         /// <param name="s">The s.</param>         /// <returns></returns>         public static int ToInt(this string s)         {             int i;             return int.TryParse(s, out i) ? i : 0;         }         /// <summary>         /// Finds the visual child.         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="depObj">The dep obj.</param>         /// <returns></returns>         public static T FindVisualChild<T>(DependencyObject depObj)             where T : DependencyObject         {             if (depObj != null)             {                 for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)                 {                     DependencyObject child = VisualTreeHelper.GetChild(depObj, i);                     if (child != null && child is T)                     {                         return (T)child;                     }                     T childItem = FindVisualChild<T>(child);                     if (childItem != null) return childItem;                 }             }             return null;         }         #endregion Methods     } }