CSharp examples for System.Collections.Generic:List
Makes a slice of the specified list in between the start and end indexes, getting every so many items based upon the step.
// Permission is hereby granted, free of charge, to any person using System.Globalization; using System.Linq; using System.Collections; using System.Text; using System.Reflection; using System.Collections.ObjectModel; using System.Collections.Generic; using System;/*from w w w. j a v a 2 s .c o m*/ public class Main{ /// <summary> /// Makes a slice of the specified list in between the start and end indexes, /// getting every so many items based upon the step. /// </summary> /// <param name="list">The list.</param> /// <param name="start">The start index.</param> /// <param name="end">The end index.</param> /// <param name="step">The step.</param> /// <returns>A slice of the list.</returns> public static IList<T> Slice<T>(IList<T> list, int? start, int? end, int? step) { if (list == null) throw new ArgumentNullException("list"); if (step == 0) throw new ArgumentException("Step cannot be zero.", "step"); List<T> slicedList = new List<T>(); // nothing to slice if (list.Count == 0) return slicedList; // set defaults for null arguments int s = step ?? 1; int startIndex = start ?? 0; int endIndex = end ?? list.Count; // start from the end of the list if start is negitive startIndex = (startIndex < 0) ? list.Count + startIndex : startIndex; // end from the start of the list if end is negitive endIndex = (endIndex < 0) ? list.Count + endIndex : endIndex; // ensure indexes keep within collection bounds startIndex = Math.Max(startIndex, 0); endIndex = Math.Min(endIndex, list.Count - 1); // loop between start and end indexes, incrementing by the step for (int i = startIndex; i < endIndex; i += s) { slicedList.Add(list[i]); } return slicedList; } /// <summary> /// Makes a slice of the specified list in between the start and end indexes. /// </summary> /// <param name="list">The list.</param> /// <param name="start">The start index.</param> /// <param name="end">The end index.</param> /// <returns>A slice of the list.</returns> public static IList<T> Slice<T>(IList<T> list, int? start, int? end) { return Slice<T>(list, start, end, null); } }