/// <summary> /// Returns an <see cref="IEnumerable{T}"/> of Dequeued Items from the Front of the /// <paramref name="deque"/>. The returned items will be in /// <see cref="Generic.IDeque{T}.DequeueFront"/> order and there may be as many as /// up to <paramref name="count"/> items. /// </summary> /// <param name="deque"></param> /// <param name="count"></param> /// <returns></returns> public static IEnumerable <object> DequeueFrontMany(this IDeque deque, int count = 1) { while (count-- > 0 && deque.Count > 0) { yield return(deque.DequeueFront()); } }
/// <summary> /// Tries to Dequeue as Many <see cref="object"/> Items as possible. May return with /// a <paramref name="result"/> that contains up to <paramref name="count"/> number of /// them. The returned <paramref name="result"/> will be in /// <see cref="Generic.IDeque{T}.DequeueFront"/> order. /// </summary> /// <param name="deque"></param> /// <param name="result"></param> /// <param name="count"></param> /// <returns></returns> public static bool TryDequeueFrontMany(this IDeque deque, out IEnumerable <object> result, int count = 1) { result = new List <object>(); while (count-- > 0 && deque.Count > 0) { ((IList <object>)result).Add(deque.DequeueFront()); } return(result.Any()); }