static void Main(string[] args) { Console.Title = "Expression2SqlTest"; ExpressionToSql <UserInfo> userInfoSql = new ExpressionToSql <UserInfo>(new MySQLSqlParser()); Printf( userInfoSql.Select().Where(u => u.Id != 1), "Instance class" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == "Jones"), "SQLServer static class" ); Printf( ExpressionToSqlMySQL.Select <UserInfo>(). Where(u => u.Name == "Tom"), "MySQL static class" ); Printf( ExpressionToSqlSQLite.Select <UserInfo>(). Where(u => u.Name == "Venus"), "SQLite static class" ); Printf( ExpressionToSqlOracle.Select <UserInfo>(). Where(u => u.Name == "Lucy"), "Oracle static class" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(), "Query single table all fields" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id), "Query single table single field" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => new { u.Id, u.Name }), "Query single table specified field" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => new { UserId = u.Id, u.Email, UserName = u.Name }), "Query single table specified field, take field alias" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == "Alice"), "Query single table with multiple conditions" ); string parameterValue = "Jack"; Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == parameterValue), "Query single table with multiple conditions" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.Like("b")), "Query single table with 'like' conditions" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.LikeLeft("b")), "Query single table with 'like left' conditions" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.LikeRight("b")), "Query single table with 'like right' conditions" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Id.In(1, 2, 3, 4, 5)), "Query single table with 'in' conditions, mode 1" ); int[] aryId = { 1, 2, 3 }; Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Id.In(aryId)), "Query single table with 'in' conditions, mode 2" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Name.In(new string[] { "a", "b" })), "Query single table with 'in' conditions, mode 3" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where( u => u.Name == "b" && u.Id > 2 && u.Name != null && u.Id > int.MinValue && u.Id < int.MaxValue && u.Id.In(1, 2, 3) && u.Name.Like("a") && u.Name.LikeLeft("b") && u.Name.LikeRight("c") || u.Id == null ), "Query single table with multiple conditions" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where( u => u.Name == "b" && (u.Id == 100 || u.Id != null) && (u.Id == 50 || u.Id == null) ), "Query single table with multiple conditions, parentheses priority" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). Join <Account>((u, a) => u.Id == a.UserId), "Multi-table join query" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). InnerJoin <Account>((u, a) => u.Id == a.UserId), "Multi-table innerJoin query" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). LeftJoin <Account>((u, a) => u.Id == a.UserId), "Multi-table leftJoin query" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). RightJoin <Account>((u, a) => u.Id == a.UserId), "Multi-table rightJoin query" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). FullJoin <Account>((u, a) => u.Id == a.UserId), "Multi-table fullJoin query" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account, Student, Class, City, Country>((a, b, c, d, e, f) => new { a.Id, b.Name, StudentName = c.Name, ClassName = d.Name, e.CityName, CountryName = f.Name }). Join <Account>((u, a) => u.Id == a.UserId). LeftJoin <Account, Student>((a, s) => a.Id == s.AccountId). RightJoin <Student, Class>((s, c) => s.Id == c.UserId). InnerJoin <Class, City>((c, d) => c.CityId == d.Id). FullJoin <City, Country>((c, d) => c.CountryId == d.Id). Where(u => u.Id != null), "More complex associated query table, the same column name alias" ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(u => u.Id). GroupBy(u => u.Name), "GroupBy" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). OrderBy(u => u.Id), "OrderBy" ); Printf( ExpressionToSqlSQLServer.Max <UserInfo>(u => u.Id), "Returns a column of the maximum value, null value is not included in the calculation" ); Printf( ExpressionToSqlSQLServer.Min <UserInfo>(u => u.Id), "Returns a column of the minimum value, null value is not included in the calculation" ); Printf( ExpressionToSqlSQLServer.Avg <UserInfo>(u => u.Id), "Returns the numerical average of the column, null value is not included in the calculation" ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(), "Returns the record number in the table." ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(u => u.Id), "Returns the value of the specified column number(null can't be counted)" ); Printf( ExpressionToSqlSQLServer.Sum <UserInfo>(u => u.Id), "Returns the total number of numeric column(total amount)" ); Printf( ExpressionToSqlSQLServer.Insert <UserInfo>(() => new { Name = "Paul", Sex = 1, Email = "*****@*****.**" }), "Insert a record" ); Printf( ExpressionToSqlSQLServer.Delete <UserInfo>(), "A full table delete" ); Printf( ExpressionToSqlSQLServer.Delete <UserInfo>(). Where(u => u.Id == null), "According to the condition delete specified table record" ); Printf( ExpressionToSqlSQLServer.Update <UserInfo>(() => new { Name = "Marilyn", Sex = 1, Email = "*****@*****.**" }), "A full table updates" ); Printf( ExpressionToSqlSQLServer.Update <UserInfo>(() => new { Name = "Susan", Sex = 1, Email = "*****@*****.**" }). Where(u => u.Id == 1), "According to the condition update specified table record" ); //to be continued... }
static void Main(string[] args) { Console.Title = "Expression2SqlTest"; ExpressionToSql <UserInfo> userInfoSql = new ExpressionToSql <UserInfo>(new MySQLSqlParser()); Printf( userInfoSql.Select().Where(u => u.Id != 1), "查询单表,带where条件,实例类" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == "张三"), "SQLServer静态类" ); Printf( ExpressionToSqlMySQL.Select <UserInfo>(). Where(u => u.Name == "张三"), "MySQL静态类" ); Printf( ExpressionToSqlSQLite.Select <UserInfo>(). Where(u => u.Name == "张三"), "SQLite静态类" ); Printf( ExpressionToSqlOracle.Select <UserInfo>(). Where(u => u.Name == "张三"), "Oracle静态类" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(), "查询单表所有字段" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id), "查询单表单个字段" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => new { u.Id, u.Name }), "查询单表指定字段" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => new { UserId = u.Id, u.Email, UserName = u.Name }), "查询单表指定字段,取字段别名" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == "张三"), "查询单表,带where条件,实参赋值" ); string parameterValue = "李四"; Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). Where(u => u.Name == parameterValue), "查询单表,带where条件,形参赋值" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.Like("b")), "查询单表,带where Like条件" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.LikeLeft("b")), "查询单表,带where LikeLeft条件" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where(u => u.Name.LikeRight("b")), "查询单表,带where LikeRight条件" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Id.In(1, 2, 3, 4, 5)), "查询单表,带where in条件,写法一" ); int[] aryId = { 1, 2, 3 }; Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Id.In(aryId)), "查询单表,带where in条件,写法二" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Name). Where(u => u.Name.In(new string[] { "a", "b" })), "查询单表,带where in条件,写法三" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where( u => u.Name == "b" && u.Id > 2 && u.Name != null && u.Id > int.MinValue && u.Id < int.MaxValue && u.Id.In(1, 2, 3) && u.Name.Like("a") && u.Name.LikeLeft("b") && u.Name.LikeRight("c") || u.Id == null ), "查询单表,带多个where条件" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(u => u.Id). Where( u => u.Name == "b" && (u.Id == 100 || u.Id != null) && (u.Id == 50 || u.Id == null) ), "查询单表,带多个where条件,括号优先级" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). Join <Account>((u, a) => u.Id == a.UserId), "多表Join关联查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). InnerJoin <Account>((u, a) => u.Id == a.UserId), "多表InnerJoin关联查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). LeftJoin <Account>((u, a) => u.Id == a.UserId), "多表LeftJoin关联查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). RightJoin <Account>((u, a) => u.Id == a.UserId), "多表RightJoin关联查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account>((u, a) => new { u.Id, a.Name }). FullJoin <Account>((u, a) => u.Id == a.UserId), "多表FullJoin关联查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo, Account, Student, Class, City, Country>((a, b, c, d, e, f) => new { a.Id, b.Name, StudentName = c.Name, ClassName = d.Name, e.CityName, CountryName = f.Name }). Join <Account>((u, a) => u.Id == a.UserId). LeftJoin <Account, Student>((a, s) => a.Id == s.AccountId). RightJoin <Student, Class>((s, c) => s.Id == c.UserId). InnerJoin <Class, City>((c, d) => c.CityId == d.Id). FullJoin <City, Country>((c, d) => c.CountryId == d.Id). Where(u => u.Id != null), "多表复杂关联查询,多表相同列名取别名" ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(u => u.Id). GroupBy(u => u.Name), "GroupBy分组查询" ); Printf( ExpressionToSqlSQLServer.Select <UserInfo>(). OrderBy(u => u.Id), "OrderBy排序" ); Printf( ExpressionToSqlSQLServer.Max <UserInfo>(u => u.Id), "返回一列中的最大值。NULL 值不包括在计算中。" ); Printf( ExpressionToSqlSQLServer.Min <UserInfo>(u => u.Id), "返回一列中的最小值。NULL 值不包括在计算中。" ); Printf( ExpressionToSqlSQLServer.Avg <UserInfo>(u => u.Id), "返回数值列的平均值。NULL 值不包括在计算中。" ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(), "返回表中的记录数" ); Printf( ExpressionToSqlSQLServer.Count <UserInfo>(u => u.Id), "返回指定列的值的数目(NULL 不计入)" ); Printf( ExpressionToSqlSQLServer.Sum <UserInfo>(u => u.Id), "返回数值列的总数(总额)。" ); Printf( ExpressionToSqlSQLServer.Insert <UserInfo>(() => new { Name = "张三", Sex = 1, Email = "*****@*****.**" }), "插入一条记录" ); Printf( ExpressionToSqlSQLServer.Delete <UserInfo>(), "全表删除" ); Printf( ExpressionToSqlSQLServer.Delete <UserInfo>(). Where(u => u.Id == null), "根据where条件删除指定表记录" ); Printf( ExpressionToSqlSQLServer.Update <UserInfo>(() => new { Name = "", Sex = 1, Email = "*****@*****.**" }), "全表更新" ); Printf( ExpressionToSqlSQLServer.Update <UserInfo>(() => new { Name = "", Sex = 1, Email = "*****@*****.**" }). Where(u => u.Id == 1), "根据where条件更新指定表记录" ); //to be continued... }