private ISingleOperator <TCandidate> CreateOperator <TSpecification>(Expecting expecting) where TSpecification : ISpecification <TCandidate>, new() { var candidateOperator = new SingleOperator(_candidate); candidateOperator.AddToGroup <TSpecification>(expecting); return(candidateOperator); }
private bool IsSeperator(char current) { return(SingleOperator.Contains(current)); }
/// <summary> /// Create an operation specific predicate /// </summary> /// <param name="name">Parameterized property name</param> /// <param name="value">Parameterized value</param> /// <param name="operator">Operator</param> /// <returns></returns> public static string Create(string name, string value, SingleOperator @operator) { string predicate; switch (@operator) { case SingleOperator.Equals: predicate = $"{name} == {value}"; break; case SingleOperator.NotEquals: predicate = $"{name} != {value}"; break; case SingleOperator.GreaterThan: predicate = $"{name} > {value}"; break; case SingleOperator.GreaterThanOrEqualTo: predicate = $"{name} >= {value}"; break; case SingleOperator.LessThan: predicate = $"{name} < {value}"; break; case SingleOperator.LessThanOrEqualTo: predicate = $"{name} <= {value}"; break; case SingleOperator.IsNull: predicate = $"{name} == {value}"; break; case SingleOperator.IsNotNull: predicate = $"{name} != {value}"; break; case SingleOperator.StartsWith: predicate = $"({name} == null ? string.Empty : {name}.ToString()).StartsWith({value})"; break; case SingleOperator.EndsWith: predicate = $"({name} == null ? string.Empty : {name}.ToString()).EndsWith({value})"; break; case SingleOperator.Like: predicate = $"({name} == null ? string.Empty : {name}.ToString()).Contains({value})"; break; case SingleOperator.DoesNotStartWith: predicate = $"!({name} == null ? string.Empty : {name}.ToString()).StartsWith({value})"; break; case SingleOperator.DoesNotEndWith: predicate = $"!({name} == null ? string.Empty : {name}.ToString()).EndsWith({value})"; break; case SingleOperator.NotLike: predicate = $"!({name} == null ? string.Empty : {name}.ToString()).Contains({value})"; break; case SingleOperator.In: predicate = $"{value}.Contains({name})"; break; case SingleOperator.NotIn: predicate = $"!{value}.Contains({name})"; break; default: throw new ArgumentException($"'{@operator}' is not a valid operation."); } return(predicate); }