namespace Managing.Core { public static class MiscExtensions { // Ex: collection.TakeLast(5); //public static IEnumerable TakeLast(this IEnumerable source, int N) //{ // return source.Skip(Math.Max(0, source.Count() - N)); //} // foreach(IEnumerable batch in users.Batch(1000)) public static IEnumerable> Batch( this IEnumerable source, int size) { T[] bucket = null; var count = 0; foreach (var item in source) { if (bucket == null) bucket = new T[size]; bucket[count++] = item; if (count != size) continue; yield return bucket.Select(x => x); bucket = null; count = 0; } // Return the last bucket with all remaining elements if (bucket != null && count > 0) { Array.Resize(ref bucket, count); yield return bucket.Select(x => x); } } public static void AddItem(this List list, T item) { if (!list.Contains(item)) { list.Add(item); } } public static T ParseEnum(string value) { return (T)Enum.Parse(typeof(T), value, true); } public static string Base64Encode(string plainText) { var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); return System.Convert.ToBase64String(plainTextBytes); } public static string Base64Decode(string base64EncodedData) { var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData); return System.Text.Encoding.UTF8.GetString(base64EncodedBytes); } } }