public void Test_Spec() { var filter = new CustomerFilter { Any = false, CustomerIds = new List <int> { 1, 2 }, CustomerName = "CustomerName_1", SortColumns = new List <string> { "CustomerId", "CustomerName " }, Desc = false }; var spec1 = new IfSpec("CustomerId in (@CustomerIds)", p => p["@CustomerIds"] = filter.CustomerIds); var spec2 = new IfSpec("CustomerName = @CustomerName", p => p["@CustomerName"] = filter.CustomerName); var and1Spec = new AndSpec(spec1, spec2); var and2Spec = new AndSpec(spec1, spec2); var orSpec = new OrSpec(and1Spec, and2Spec); var whereSpec = new WhereSpec(orSpec, " "); var selelctSpec = new CommaSpec(new string[] { "CustomerId", "CustomerName", "@param1 as param1" }, p => p["@param1"] = 1); var sortSpec = new CommaSpec(filter.SortColumns, defaultPredicate: "CustomerId"); string sql = $@" select {selelctSpec} from Customer {whereSpec} order by {sortSpec} "; Console.Write(sql); using (var connection = _testInitializer.CreateConnection()) { connection.Open(); var customersCount = connection.Query("select * from Customer").Fetch().Count(); var customers = connection .Query <Customer>(sql) .Params(p => { p.AddMap(whereSpec); p.AddMap(selelctSpec); }) .Fetch() .ToArray(); Assert.AreEqual(1, customers.Count()); connection.Close(); } }
public bool Equals(OrSpec other) { return(this.spec1.Equals(other.spec1) && this.spec2.Equals(other.spec2)); }