67 lines
1.9 KiB
C#
67 lines
1.9 KiB
C#
namespace Managing.Core
|
|
{
|
|
public static class MiscExtensions
|
|
{
|
|
// Ex: collection.TakeLast(5);
|
|
//public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N)
|
|
//{
|
|
// return source.Skip(Math.Max(0, source.Count() - N));
|
|
//}
|
|
|
|
// foreach(IEnumerable<User> batch in users.Batch(1000))
|
|
public static IEnumerable<IEnumerable<T>> Batch<T>(
|
|
this IEnumerable<T> 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<T>(this List<T> list, T item)
|
|
{
|
|
if (!list.Contains(item))
|
|
{
|
|
list.Add(item);
|
|
}
|
|
}
|
|
|
|
public static T ParseEnum<T>(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);
|
|
}
|
|
}
|
|
}
|