public static void StringConditions(IDictionary <string, IReferenceTypeCondition <string> > conditions) { conditions["none"] = new ReferenceTypeNoneCondition <string>("None"); conditions["equal"] = new ReferenceTypeEqualCondition <string>("Equal"); conditions["notequal"] = new ReferenceTypeNotEqualCondition <string>("NotEqual"); conditions["contains"] = new ContainsCondition("Contains"); conditions["startswith"] = new StartsWithCondition("StartsWith"); conditions["endtswith"] = new EndsWithCondition("EndsWith"); conditions["isnullorempty"] = new IsNullOrEmptyCondition("IsNullOrEmpty"); conditions["isnotnullorempty"] = new IsNotNullOrEmptyCondition("IsNotNullOrEmpty"); }
public void ReferenceTypeNoneCondition() { var referenceTypeNoneCondition = new ReferenceTypeNoneCondition <string>(); var expr1 = referenceTypeNoneCondition.For <TestSource>(x => x.Name); Assert.IsNull(expr1); referenceTypeNoneCondition.Value = new FilterValue <string> { LeftValue = "123", RightValue = "1", Values = new List <string> { "1", "2", "3", "34" } }; var expr2 = referenceTypeNoneCondition.For <TestSource>(x => x.Name); Assert.IsNull(expr2); }
public void ReferenceTypeConditionBuilder() { var filter = new ReferenceTypeFilter <User, string>(); filter.For(x => x.Guid); filter.Conditions(conditions => { conditions["none"] = new ReferenceTypeNoneCondition <string>(); conditions["equal"] = new ReferenceTypeEqualCondition <string>(); conditions["isin"] = new ReferenceTypeIsInCondition <string>(); conditions["isnull"] = new ReferenceTypeIsNullCondition <string>(); conditions["isnotnull"] = new ReferenceTypeIsNotNullCondition <string>(); }); filter.ConditionBuilder((filterValue, condition, conditionKey) => { var expression = condition(filterValue); if (expression == null) { return(null); } switch (conditionKey) { case "isnotnull": { return(Linq.Expr <Task, bool>(x => x.Users.AsQueryable().Any())); } case "isnull": { return(Linq.Expr <Task, bool>(x => !x.Users.AsQueryable().Any())); } default: //for equal,isin { return(Linq.Expr <Task, bool>(x => x.Users.AsQueryable().Any(expression))); } } }); filter.Init(new FilterValue <string> { LeftValue = "1", ConditionKey = "equal" }); var expr1 = filter.BuildExpression <User>(); Assert.IsNull(expr1); var epxr2 = filter.BuildExpression <Task>(); Assert.IsNotNull(epxr2); var tasksAnyUserId1 = filter.ApplyFilter(Source); Assert.IsTrue(tasksAnyUserId1.Count() == 1); filter.Init(new FilterValue <string> { ConditionKey = "isnotnull" }); var tasksAnyUsers = filter.ApplyFilter(Source); Assert.IsTrue(tasksAnyUsers.Count() == 3); filter.Init(new FilterValue <string> { ConditionKey = "isnull" }); var tasksNotAnyUsers = filter.ApplyFilter(Source); Assert.IsTrue(tasksNotAnyUsers.Count() == 1); filter.Init(new FilterValue <string> { ConditionKey = "isin", Values = new List <string> { "1", "5" } }); var tasksIsInUser1User5 = filter.ApplyFilter(Source); Assert.IsTrue(tasksIsInUser1User5.Count() == 2); }