Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class Linq
- {
- public static IEnumerable<T> Except<T>(this IEnumerable<T> source, IEnumerable<T> target, Func<T, T, bool> func)
- {
- return source.Except(target, new LambdaComparer<T>(func));
- }
- public static TResult With<TInput, TResult>(this TInput o, Func<TInput, TResult> evaluator)
- where TInput : class
- {
- if (o == null) return default(TResult);
- return evaluator(o);
- }
- public static TResult Return<TInput, TResult>(this TInput o, Func<TInput, TResult> evaluator, TResult failure_value) where TInput : class
- {
- if (o == null) return failure_value;
- return evaluator(o);
- }
- public static bool Check<TInput>(this TInput o, Func<TInput, bool> evaluator) where TInput : class
- {
- if (o == null) return false;
- return evaluator(o);
- }
- public static TInput If<TInput>(this TInput o, Func<TInput, bool> evaluator) where TInput : class
- {
- if (o == null) return null;
- return evaluator(o) ? o : null;
- }
- public static TInput Unless<TInput>(this TInput o, Func<TInput, bool> evaluator) where TInput : class
- {
- if (o == null) return null;
- return evaluator(o) ? null : o;
- }
- public static TInput Do<TInput>(this TInput o, Action<TInput> action) where TInput : class
- {
- if (o == null) return null;
- action(o);
- return o;
- }
- public static List<TInput> Delete<TInput>(this List<TInput> o, Func<TInput, bool> evaluator) where TInput : class
- {
- var listToDelete = o.Where(evaluator).ToList();
- foreach (var input in listToDelete)
- {
- o.Remove(input);
- }
- return o;
- }
- }
- public class LambdaComparer<T> : IEqualityComparer<T>
- {
- private readonly Func<T, T, bool> _lambdaComparer;
- private readonly Func<T, int> _lambdaHash;
- public LambdaComparer(Func<T, T, bool> lambdaComparer) :
- this(lambdaComparer, o => 0)
- {
- }
- public LambdaComparer(Func<T, T, bool> lambdaComparer, Func<T, int> lambdaHash)
- {
- if (lambdaComparer == null)
- throw new ArgumentNullException("lambdaComparer");
- if (lambdaHash == null)
- throw new ArgumentNullException("lambdaHash");
- _lambdaComparer = lambdaComparer;
- _lambdaHash = lambdaHash;
- }
- public bool Equals(T x, T y)
- {
- return _lambdaComparer(x, y);
- }
- public int GetHashCode(T obj)
- {
- return _lambdaHash(obj);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment