public static IList <T> Add <T>(this IList <T> me, Generic.IEnumerable <T> items) { if (items.NotNull()) { foreach (T item in items) { me.Add(item); } } return(me); }
public static Generic.IEnumerable <TResult> AllPermutations <TLeft, TRight, TResult>(this Generic.IEnumerable <TLeft> me, Generic.IEnumerable <TRight> other, Func <TLeft, TRight, TResult> combine) { if (me.NotNull() && other.NotNull() && combine.NotNull()) { foreach (var meItem in me) { foreach (var otherItem in other) { yield return(combine(meItem, otherItem)); } } } }
public static string Join(this Generic.IEnumerable <string> me) { System.Text.StringBuilder result = null; if (me.NotNull()) { result = new System.Text.StringBuilder(); Generic.IEnumerator <string> enumerator = me.GetEnumerator(); while (enumerator.MoveNext()) { result.Append(enumerator.Current); } } return(result?.ToString()); }
public static T First <T>(this Generic.IEnumerable <T> me) { T result; if (me.NotNull()) { using (Generic.IEnumerator <T> enumerator = me.GetEnumerator()) result = enumerator.MoveNext() ? enumerator.Current : default(T); } else { result = default(T); } return(result); }
public static T?FirstOrNull <T>(this Generic.IEnumerable <T> me) where T : struct { T?result; if (me.NotNull()) { using (Generic.IEnumerator <T> enumerator = me.GetEnumerator()) result = enumerator.MoveNext() ? enumerator.Current : default(T); } else { result = null; } return(result); }
public static Generic.IEnumerable <T> Append <T>(this Generic.IEnumerable <T> me, Generic.IEnumerable <T> other) { if (me.NotNull()) { foreach (T item in me) { yield return(item); } } if (other.NotNull()) { foreach (T item in other) { yield return(item); } } }
public static Generic.IEnumerable <TResult> Zip <TLeft, TRight, TResult>(this Generic.IEnumerable <TLeft> me, Generic.IEnumerable <TRight> other, Func <TLeft, TRight, TResult> combine) { return(me.NotNull() && other.NotNull() && combine.NotNull() ? new Enumerable <TResult>(() => me.GetEnumerator().Zip(other.GetEnumerator(), combine)) : Enumerable.Empty <TResult>()); }
public static int Count <T>(this Generic.IEnumerable <T> me) { return(me.NotNull() ? me.GetEnumerator().Count() : 0); }
/// <summary> /// Copies data of <paramref>me</paramref> into a new array. /// </summary> /// <param name="me">Block to copy data from.</param> /// <returns>A new array containing the data from <paramref>me</paramref>.</returns> public static T[] ToArray <T>(this Generic.IEnumerable <T> me) { return(me.NotNull() ? me.GetEnumerator().ToArray(0) : null); }