اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
شاید برای شما هم پیش آمده باشد که بخواهید در هر بار واکشی لیستی از اطلاعات، مثلا از دیتابیس، آیتمهای آن را بصورت تصادفی مرتب کنید.
من در پروژه اخیرم برای نمایش یک سری سوال مجبور بودم که در هر بار نمایش سوالات، لیست را به صورت رندوم مرتب کنم و به کاربر نمایش بدم. برای حصول این مهم، یک extension method به شکل زیر نوشتم:
در این تابع که اسمش را Shuffle گذاشتم، با دریافت یک لیست از نوع T، آیتمهای درون لیست را به صورت تصادفی مرتب میکند.
مثال :
در این مثال لیست x که از نوع int میباشد پس از فراخوانی Shuffle به یک لیست نامرتب تبدیل میشود که نحوه چیدمان در هر بار فراخوانی، تصادفی خواهد بود.
من در پروژه اخیرم برای نمایش یک سری سوال مجبور بودم که در هر بار نمایش سوالات، لیست را به صورت رندوم مرتب کنم و به کاربر نمایش بدم. برای حصول این مهم، یک extension method به شکل زیر نوشتم:
public static class RandomExtentions { public static void Shuffle<T>(this IList<T> list) { Random rng = new Random(); Thread.Sleep(100); int n = list.Count; while (n > 1) { n--; int k = rng.Next(n + 1); T value = list[k]; list[k] = list[n]; list[n] = value; } } }
مثال :
var x =new List<int>(); x.Add(1); x.Add(2); x.Add(3); x.Add(4); x.Add(5); x.Shuffle();