Example #1
0
        public static void Method()
        {
            IQuery <User> q = context.Query <User>();

            var space = new char[] { ' ' };

            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now.AddDays(1);

            q.Select(a => new
            {
                Id = a.Id,

                String_Length = (int?)a.Name.Length,                                 //LEN([Users].[Name])
                Substring     = a.Name.Substring(0),                                 //SUBSTRING([Users].[Name],0 + 1,LEN([Users].[Name]))
                Substring1    = a.Name.Substring(1),                                 //SUBSTRING([Users].[Name],1 + 1,LEN([Users].[Name]))
                Substring1_2  = a.Name.Substring(1, 2),                              //SUBSTRING([Users].[Name],1 + 1,2)
                ToLower       = a.Name.ToLower(),                                    //LOWER([Users].[Name])
                ToUpper       = a.Name.ToUpper(),                                    //UPPER([Users].[Name])
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),                        //too long
                Contains      = (bool?)a.Name.Contains("s"),                         //
                Trim          = a.Name.Trim(),                                       //RTRIM(LTRIM([Users].[Name]))
                TrimStart     = a.Name.TrimStart(space),                             //LTRIM([Users].[Name])
                TrimEnd       = a.Name.TrimEnd(space),                               //RTRIM([Users].[Name])
                StartsWith    = (bool?)a.Name.StartsWith("s"),                       //
                EndsWith      = (bool?)a.Name.EndsWith("s"),                         //

                DiffYears        = DbFunctions.DiffYears(startTime, endTime),        //DATEDIFF(YEAR,@P_0,@P_1)
                DiffMonths       = DbFunctions.DiffMonths(startTime, endTime),       //DATEDIFF(MONTH,@P_0,@P_1)
                DiffDays         = DbFunctions.DiffDays(startTime, endTime),         //DATEDIFF(DAY,@P_0,@P_1)
                DiffHours        = DbFunctions.DiffHours(startTime, endTime),        //DATEDIFF(HOUR,@P_0,@P_1)
                DiffMinutes      = DbFunctions.DiffMinutes(startTime, endTime),      //DATEDIFF(MINUTE,@P_0,@P_1)
                DiffSeconds      = DbFunctions.DiffSeconds(startTime, endTime),      //DATEDIFF(SECOND,@P_0,@P_1)
                DiffMilliseconds = DbFunctions.DiffMilliseconds(startTime, endTime), //DATEDIFF(MILLISECOND,@P_0,@P_1)
                //DiffMicroseconds = DbFunctions.DiffMicroseconds(startTime, endTime),//DATEDIFF(MICROSECOND,@P_0,@P_1)  Exception

                /* No longer support method 'DateTime.Subtract(DateTime d)', instead of using 'DbFunctions.DiffXX' */
                //SubtractTotalDays = endTime.Subtract(startTime).TotalDays,//CAST(DATEDIFF(DAY,@P_0,@P_1)
                //SubtractTotalHours = endTime.Subtract(startTime).TotalHours,//CAST(DATEDIFF(HOUR,@P_0,@P_1)
                //SubtractTotalMinutes = endTime.Subtract(startTime).TotalMinutes,//CAST(DATEDIFF(MINUTE,@P_0,@P_1)
                //SubtractTotalSeconds = endTime.Subtract(startTime).TotalSeconds,//CAST(DATEDIFF(SECOND,@P_0,@P_1)
                //SubtractTotalMilliseconds = endTime.Subtract(startTime).TotalMilliseconds,//CAST(DATEDIFF(MILLISECOND,@P_0,@P_1)

                AddYears        = startTime.AddYears(1),                         //DATEADD(YEAR,1,@P_0)
                AddMonths       = startTime.AddMonths(1),                        //DATEADD(MONTH,1,@P_0)
                AddDays         = startTime.AddDays(1),                          //DATEADD(DAY,1,@P_0)
                AddHours        = startTime.AddHours(1),                         //DATEADD(HOUR,1,@P_0)
                AddMinutes      = startTime.AddMinutes(2),                       //DATEADD(MINUTE,2,@P_0)
                AddSeconds      = startTime.AddSeconds(120),                     //DATEADD(SECOND,120,@P_0)
                AddMilliseconds = startTime.AddMilliseconds(20000),              //DATEADD(MILLISECOND,20000,@P_0)

                Now         = DateTime.Now,                                      //GETDATE()
                UtcNow      = DateTime.UtcNow,                                   //GETUTCDATE()
                Today       = DateTime.Today,                                    //CAST(GETDATE() AS DATE)
                Date        = DateTime.Now.Date,                                 //CAST(GETDATE() AS DATE)
                Year        = DateTime.Now.Year,                                 //DATEPART(YEAR,GETDATE())
                Month       = DateTime.Now.Month,                                //DATEPART(MONTH,GETDATE())
                Day         = DateTime.Now.Day,                                  //DATEPART(DAY,GETDATE())
                Hour        = DateTime.Now.Hour,                                 //DATEPART(HOUR,GETDATE())
                Minute      = DateTime.Now.Minute,                               //DATEPART(MINUTE,GETDATE())
                Second      = DateTime.Now.Second,                               //DATEPART(SECOND,GETDATE())
                Millisecond = DateTime.Now.Millisecond,                          //DATEPART(MILLISECOND,GETDATE())
                DayOfWeek   = DateTime.Now.DayOfWeek,                            //(DATEPART(WEEKDAY,GETDATE()) - 1)

                Int_Parse    = int.Parse("1"),                                   //CAST(N'1' AS INT)
                Int16_Parse  = Int16.Parse("11"),                                //CAST(N'11' AS SMALLINT)
                Long_Parse   = long.Parse("2"),                                  //CAST(N'2' AS BIGINT)
                Double_Parse = double.Parse("3"),                                //CAST(N'3' AS FLOAT)
                Float_Parse  = float.Parse("4"),                                 //CAST(N'4' AS REAL)
                //Decimal_Parse = decimal.Parse("5"),//CAST(N'5' AS DECIMAL)  ps: 'Decimal.Parse(string s)' is not supported now,because we don't know the precision and scale information.
                Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"), //CAST(N'D544BC4C-739E-4CD3-A3D3-7BF803FCE179' AS UNIQUEIDENTIFIER) AS [Guid_Parse]

                Bool_Parse     = bool.Parse("1"),                                //CASE WHEN CAST(N'1' AS BIT) = CAST(1 AS BIT) THEN CAST(1 AS BIT) WHEN NOT (CAST(N'1' AS BIT) = CAST(1 AS BIT)) THEN CAST(0 AS BIT) ELSE NULL END AS [Bool_Parse]
                DateTime_Parse = DateTime.Parse("1992-1-16"),                    //CAST(N'1992-1-16' AS DATETIME) AS [DateTime_Parse]

                B = a.Age == null ? false : a.Age > 1,
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }
Example #2
0
        public static void Method()
        {
            IQuery <User> q = context.Query <User>();

            var space = new char[] { ' ' };

            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now.AddDays(1);

            var ret = q.Select(a => new
            {
                Id = a.Id,

                String_Length = (int?)a.Name.Length,                       //LENGTH([Users].[Name])
                Substring     = a.Name.Substring(0),                       //SUBSTR([Users].[Name],0 + 1)
                Substring1    = a.Name.Substring(1),                       //SUBSTR([Users].[Name],1 + 1)
                Substring1_2  = a.Name.Substring(1, 2),                    //SUBSTR([Users].[Name],1 + 1,2)
                ToLower       = a.Name.ToLower(),                          //LOWER([Users].[Name])
                ToUpper       = a.Name.ToUpper(),                          //UPPER([Users].[Name])
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),              //CASE WHEN ([Users].[Name] IS NULL OR [Users].[Name] = '') THEN 1 ELSE 0 END = 1
                Contains      = (bool?)a.Name.Contains("s"),               //[Users].[Name] LIKE '%' || 's' || '%'
                StartsWith    = (bool?)a.Name.StartsWith("s"),             //[Users].[Name] LIKE 's' || '%'
                EndsWith      = (bool?)a.Name.EndsWith("s"),               //[Users].[Name] LIKE '%' || 's'
                Trim          = a.Name.Trim(),                             //TRIM([Users].[Name])
                TrimStart     = a.Name.TrimStart(space),                   //LTRIM([Users].[Name])
                TrimEnd       = a.Name.TrimEnd(space),                     //RTRIM([Users].[Name])

                DiffYears   = DbFunctions.DiffYears(startTime, endTime),   //(CAST(STRFTIME('%Y',@P_0) AS INTEGER) - CAST(STRFTIME('%Y',@P_1) AS INTEGER))
                DiffMonths  = DbFunctions.DiffMonths(startTime, endTime),  //((CAST(STRFTIME('%Y',@P_0) AS INTEGER) - CAST(STRFTIME('%Y',@P_1) AS INTEGER)) * 12 + (CAST(STRFTIME('%m',@P_0) AS INTEGER) - CAST(STRFTIME('%m',@P_1) AS INTEGER)))
                DiffDays    = DbFunctions.DiffDays(startTime, endTime),    //CAST((JULIANDAY(@P_0) - JULIANDAY(@P_1)) AS INTEGER)
                DiffHours   = DbFunctions.DiffHours(startTime, endTime),   //CAST((JULIANDAY(@P_0) - JULIANDAY(@P_1)) * 24 AS INTEGER)
                DiffMinutes = DbFunctions.DiffMinutes(startTime, endTime), //CAST((JULIANDAY(@P_0) - JULIANDAY(@P_1)) * 1440 AS INTEGER)
                DiffSeconds = DbFunctions.DiffSeconds(startTime, endTime), //CAST((JULIANDAY(@P_0) - JULIANDAY(@P_1)) * 86400 AS INTEGER)
                //DiffMilliseconds = DbFunctions.DiffMilliseconds(startTime, endTime),//不支持 Millisecond
                //DiffMicroseconds = DbFunctions.DiffMicroseconds(startTime, endTime),//不支持 Microseconds

                AddYears   = startTime.AddYears(1),     //DATETIME(@P_0,'+' || 1 || ' years')
                AddMonths  = startTime.AddMonths(1),    //DATETIME(@P_0,'+' || 1 || ' months')
                AddDays    = startTime.AddDays(1),      //DATETIME(@P_0,'+' || 1 || ' days')
                AddHours   = startTime.AddHours(1),     //DATETIME(@P_0,'+' || 1 || ' hours')
                AddMinutes = startTime.AddMinutes(2),   //DATETIME(@P_0,'+' || 2 || ' minutes')
                AddSeconds = startTime.AddSeconds(120), //DATETIME(@P_0,'+' || 120 || ' seconds')
                //AddMilliseconds = startTime.AddMilliseconds(2000),//不支持

                Now         = DateTime.Now,             //DATETIME('NOW','LOCALTIME')
                UtcNow      = DateTime.UtcNow,          //DATETIME()
                Today       = DateTime.Today,           //DATE('NOW','LOCALTIME')
                Date        = DateTime.Now.Date,        //DATE('NOW','LOCALTIME')
                Year        = DateTime.Now.Year,        //CAST(STRFTIME('%Y',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Month       = DateTime.Now.Month,       //CAST(STRFTIME('%m',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Day         = DateTime.Now.Day,         //CAST(STRFTIME('%d',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Hour        = DateTime.Now.Hour,        //CAST(STRFTIME('%H',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Minute      = DateTime.Now.Minute,      //CAST(STRFTIME('%M',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Second      = DateTime.Now.Second,      //CAST(STRFTIME('%S',DATETIME('NOW','LOCALTIME')) AS INTEGER)
                Millisecond = DateTime.Now.Millisecond, //@P_2 直接计算 DateTime.Now.Millisecond 的值
                DayOfWeek   = DateTime.Now.DayOfWeek,   //CAST(STRFTIME('%w',DATETIME('NOW','LOCALTIME')) AS INTEGER)

                Byte_Parse   = byte.Parse("1"),         //CAST('1' AS INTEGER)
                Int_Parse    = int.Parse("1"),          //CAST('1' AS INTEGER)
                Int16_Parse  = Int16.Parse("11"),       //CAST('11' AS INTEGER)
                Long_Parse   = long.Parse("2"),         //CAST('2' AS INTEGER)
                Double_Parse = double.Parse("3.1"),     //CAST('3.1' AS REAL)
                Float_Parse  = float.Parse("4.1"),      //CAST('4.1' AS REAL)
                //Decimal_Parse = decimal.Parse("5"),//不支持
                //Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"),//不支持 'D544BC4C-739E-4CD3-A3D3-7BF803FCE179'

                Bool_Parse     = bool.Parse("1"),              //CAST('1' AS INTEGER)
                DateTime_Parse = DateTime.Parse("2014-01-01"), //DATETIME('2014-01-01')
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }
Example #3
0
        public static void Method()
        {
            IQuery <User> q = context.Query <User>();

            var space = new char[] { ' ' };

            DateTime startTime = DateTime.Now;
            DateTime endTime   = startTime.AddDays(1);
            var      ret       = q.Select(a => new
            {
                Id = a.Id,

                CustomFunction = DbFunctions.MyFunction(a.Id), //自定义函数

                String_Length = (int?)a.Name.Length,           //LENGTH("USERS"."NAME")
                Substring     = a.Name.Substring(0),           //SUBSTR("USERS"."NAME",0 + 1,LENGTH("USERS"."NAME"))
                Substring1    = a.Name.Substring(1),           //SUBSTR("USERS"."NAME",1 + 1,LENGTH("USERS"."NAME"))
                Substring1_2  = a.Name.Substring(1, 2),        //SUBSTR("USERS"."NAME",1 + 1,2)
                ToLower       = a.Name.ToLower(),              //LOWER("USERS"."NAME")
                ToUpper       = a.Name.ToUpper(),              //UPPER("USERS"."NAME")
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),  //too long
                Contains      = (bool?)a.Name.Contains("s"),   //
                Trim          = a.Name.Trim(),                 //TRIM("USERS"."NAME")
                TrimStart     = a.Name.TrimStart(space),       //LTRIM("USERS"."NAME")
                TrimEnd       = a.Name.TrimEnd(space),         //RTRIM("USERS"."NAME")
                StartsWith    = (bool?)a.Name.StartsWith("s"), //
                EndsWith      = (bool?)a.Name.EndsWith("s"),   //
                Replace       = a.Name.Replace("l", "L"),

                /* oracle is not supported DbFunctions.Diffxx. */
                //DiffYears = DbFunctions.DiffYears(startTime, endTime),//
                //DiffMonths = DbFunctions.DiffMonths(startTime, endTime),//
                //DiffDays = DbFunctions.DiffDays(startTime, endTime),//
                //DiffHours = DbFunctions.DiffHours(startTime, endTime),//
                //DiffMinutes = DbFunctions.DiffMinutes(startTime, endTime),//
                //DiffSeconds = DbFunctions.DiffSeconds(startTime, endTime),//
                //DiffMilliseconds = DbFunctions.DiffMilliseconds(startTime, endTime),//
                //DiffMicroseconds = DbFunctions.DiffMicroseconds(startTime, endTime),//

                /* ((CAST(:P_0 AS DATE)-CAST(:P_1 AS DATE)) * 86400000 + CAST(TO_CHAR(CAST(:P_0 AS TIMESTAMP),'ff3') AS NUMBER) - CAST(TO_CHAR(CAST(:P_1 AS TIMESTAMP),'ff3') AS NUMBER)) / 86400000 */
                SubtractTotalDays         = endTime.Subtract(startTime).TotalDays,         //
                SubtractTotalHours        = endTime.Subtract(startTime).TotalHours,        //...
                SubtractTotalMinutes      = endTime.Subtract(startTime).TotalMinutes,      //...
                SubtractTotalSeconds      = endTime.Subtract(startTime).TotalSeconds,      //...
                SubtractTotalMilliseconds = endTime.Subtract(startTime).TotalMilliseconds, //...

                AddYears   = startTime.AddYears(1),                                        //ADD_MONTHS(:P_0,12 * 1)
                AddMonths  = startTime.AddMonths(1),                                       //ADD_MONTHS(:P_0,1)
                AddDays    = startTime.AddDays(1),                                         //(:P_0 + 1)
                AddHours   = startTime.AddHours(1),                                        //(:P_0 + NUMTODSINTERVAL(1,'HOUR'))
                AddMinutes = startTime.AddMinutes(2),                                      //(:P_0 + NUMTODSINTERVAL(2,'MINUTE'))
                AddSeconds = startTime.AddSeconds(120),                                    //(:P_0 + NUMTODSINTERVAL(120,'SECOND'))
                                                                                           //AddMilliseconds = startTime.AddMilliseconds(20000),//不支持

                Now         = DateTime.Now,                                                //SYSTIMESTAMP
                UtcNow      = DateTime.UtcNow,                                             //SYS_EXTRACT_UTC(SYSTIMESTAMP)
                Today       = DateTime.Today,                                              //TRUNC(SYSDATE,'DD')
                Date        = DateTime.Now.Date,                                           //TRUNC(SYSTIMESTAMP,'DD')
                Year        = DateTime.Now.Year,                                           //CAST(TO_CHAR(SYSTIMESTAMP,'yyyy') AS NUMBER)
                Month       = DateTime.Now.Month,                                          //CAST(TO_CHAR(SYSTIMESTAMP,'mm') AS NUMBER)
                Day         = DateTime.Now.Day,                                            //CAST(TO_CHAR(SYSTIMESTAMP,'dd') AS NUMBER)
                Hour        = DateTime.Now.Hour,                                           //CAST(TO_CHAR(SYSTIMESTAMP,'hh24') AS NUMBER)
                Minute      = DateTime.Now.Minute,                                         //CAST(TO_CHAR(SYSTIMESTAMP,'mi') AS NUMBER)
                Second      = DateTime.Now.Second,                                         //CAST(TO_CHAR(SYSTIMESTAMP,'ss') AS NUMBER)
                Millisecond = DateTime.Now.Millisecond,                                    //CAST(TO_CHAR(SYSTIMESTAMP,'ff3') AS NUMBER)
                DayOfWeek   = DateTime.Now.DayOfWeek,                                      //(CAST(TO_CHAR(SYSTIMESTAMP,'D') AS NUMBER) - 1)

                Int_Parse     = int.Parse("1"),                                            //CAST(N'1' AS NUMBER)
                Int16_Parse   = Int16.Parse("11"),                                         //CAST(N'11' AS NUMBER)
                Long_Parse    = long.Parse("2"),                                           //CAST(N'2' AS NUMBER)
                Double_Parse  = double.Parse("3"),                                         //CAST(N'3' AS BINARY_DOUBLE)
                Float_Parse   = float.Parse("4"),                                          //CAST(N'4' AS BINARY_FLOAT)
                Decimal_Parse = decimal.Parse("5"),                                        //CAST(N'5' AS NUMBER)
                                                                                           //Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"),//不支持

                Bool_Parse     = bool.Parse("1"),                                          //
                DateTime_Parse = DateTime.Parse("1992-1-16"),                              //TO_TIMESTAMP(N'1992-1-16','yyyy-mm-dd hh24:mi:ssxff')

                B        = a.Age == null ? false : a.Age > 1,                              //三元表达式
                CaseWhen = Case.When(a.Id > 100).Then(1).Else(0)                           //case when
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }
Example #4
0
        public static void Method()
        {
            IQuery <User> q = context.Query <User>();

            var space = new char[] { ' ' };

            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now.AddDays(1);
            var      result    = q.Select(a => new
            {
                Id = a.Id,

                CustomFunction = DbFunctions.MyFunction(a.Id), //自定义函数

                String_Length = (int?)a.Name.Length,           //
                Substring     = a.Name.Substring(0),           //
                Substring1    = a.Name.Substring(1),           //
                Substring1_2  = a.Name.Substring(1, 2),        //
                ToLower       = a.Name.ToLower(),              //
                ToUpper       = a.Name.ToUpper(),              //
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),  //
                Contains      = (bool?)a.Name.Contains("s"),   //
                Trim          = a.Name.Trim(),                 //
                TrimStart     = a.Name.TrimStart(space),       //
                TrimEnd       = a.Name.TrimEnd(space),         //
                StartsWith    = (bool?)a.Name.StartsWith("s"), //
                EndsWith      = (bool?)a.Name.EndsWith("s"),   //
                Replace       = a.Name.Replace("l", "L"),

                DateTimeSubtract = endTime.Subtract(startTime),

                /* pgsql does not support Sql.DiffXX methods. */
                //DiffYears = Sql.DiffYears(startTime, endTime),//DATEDIFF(YEAR,@P_0,@P_1)
                //DiffMonths = Sql.DiffMonths(startTime, endTime),//DATEDIFF(MONTH,@P_0,@P_1)
                //DiffDays = Sql.DiffDays(startTime, endTime),//DATEDIFF(DAY,@P_0,@P_1)
                //DiffHours = Sql.DiffHours(startTime, endTime),//DATEDIFF(HOUR,@P_0,@P_1)
                //DiffMinutes = Sql.DiffMinutes(startTime, endTime),//DATEDIFF(MINUTE,@P_0,@P_1)
                //DiffSeconds = Sql.DiffSeconds(startTime, endTime),//DATEDIFF(SECOND,@P_0,@P_1)
                //DiffMilliseconds = Sql.DiffMilliseconds(startTime, endTime),//DATEDIFF(MILLISECOND,@P_0,@P_1)
                //DiffMicroseconds = Sql.DiffMicroseconds(startTime, endTime),//DATEDIFF(MICROSECOND,@P_0,@P_1)  Exception

                AddYears        = startTime.AddYears(1),            //
                AddMonths       = startTime.AddMonths(1),           //
                AddDays         = startTime.AddDays(1),             //
                AddHours        = startTime.AddHours(1),            //
                AddMinutes      = startTime.AddMinutes(2),          //
                AddSeconds      = startTime.AddSeconds(120),        //
                AddMilliseconds = startTime.AddMilliseconds(20000), //

                Now = DateTime.Now,                                 //NOW()
                //UtcNow = DateTime.UtcNow,//GETUTCDATE()
                Today       = DateTime.Today,                       //
                Date        = DateTime.Now.Date,                    //
                Year        = DateTime.Now.Year,                    //
                Month       = DateTime.Now.Month,                   //
                Day         = DateTime.Now.Day,                     //
                Hour        = DateTime.Now.Hour,                    //
                Minute      = DateTime.Now.Minute,                  //
                Second      = DateTime.Now.Second,                  //
                Millisecond = DateTime.Now.Millisecond,             //
                DayOfWeek   = DateTime.Now.DayOfWeek,               //

                Int_Parse     = int.Parse("32"),                    //
                Int16_Parse   = Int16.Parse("16"),                  //
                Long_Parse    = long.Parse("64"),                   //
                Double_Parse  = double.Parse("3.123"),              //
                Float_Parse   = float.Parse("4.123"),               //
                Decimal_Parse = decimal.Parse("5.123"),             //
                //Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"),//

                Bool_Parse     = bool.Parse("1"),                //
                DateTime_Parse = DateTime.Parse("1992-1-16"),    //

                B        = a.Age == null ? false : a.Age > 1,    //三元表达式
                CaseWhen = Case.When(a.Id > 100).Then(1).Else(0) //case when
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }
Example #5
0
        public static void Method()
        {
            IQuery <User> q = context.Query <User>();

            var space = new char[] { ' ' };

            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now.AddDays(1);

            var ret = q.Select(a => new
            {
                Id = a.Id,

                CustomFunction = DbFunctions.MyFunction(a.Id), //自定义函数

                String_Length = (int?)a.Name.Length,           //LENGTH(`Users`.`Name`)
                Substring     = a.Name.Substring(0),           //SUBSTRING(`Users`.`Name`,0 + 1,LENGTH(`Users`.`Name`))
                Substring1    = a.Name.Substring(1),           //SUBSTRING(`Users`.`Name`,1 + 1,LENGTH(`Users`.`Name`))
                Substring1_2  = a.Name.Substring(1, 2),        //SUBSTRING(`Users`.`Name`,1 + 1,2)
                ToLower       = a.Name.ToLower(),              //LOWER(`Users`.`Name`)
                ToUpper       = a.Name.ToUpper(),              //UPPER(`Users`.`Name`)
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),  //CASE WHEN (`Users`.`Name` IS NULL OR `Users`.`Name` = N'') THEN 1 ELSE 0 END = 1
                Contains      = (bool?)a.Name.Contains("s"),   //`Users`.`Name` LIKE CONCAT('%',N's','%')
                Trim          = a.Name.Trim(),                 //TRIM(`Users`.`Name`)
                TrimStart     = a.Name.TrimStart(space),       //LTRIM(`Users`.`Name`)
                TrimEnd       = a.Name.TrimEnd(space),         //RTRIM(`Users`.`Name`)
                StartsWith    = (bool?)a.Name.StartsWith("s"), //`Users`.`Name` LIKE CONCAT(N's','%')
                EndsWith      = (bool?)a.Name.EndsWith("s"),   //`Users`.`Name` LIKE CONCAT('%',N's')
                Replace       = a.Name.Replace("l", "L"),

                DiffYears   = Sql.DiffYears(startTime, endTime),   //TIMESTAMPDIFF(YEAR,?P_0,?P_1)
                DiffMonths  = Sql.DiffMonths(startTime, endTime),  //TIMESTAMPDIFF(MONTH,?P_0,?P_1)
                DiffDays    = Sql.DiffDays(startTime, endTime),    //TIMESTAMPDIFF(DAY,?P_0,?P_1)
                DiffHours   = Sql.DiffHours(startTime, endTime),   //TIMESTAMPDIFF(HOUR,?P_0,?P_1)
                DiffMinutes = Sql.DiffMinutes(startTime, endTime), //TIMESTAMPDIFF(MINUTE,?P_0,?P_1)
                DiffSeconds = Sql.DiffSeconds(startTime, endTime), //TIMESTAMPDIFF(SECOND,?P_0,?P_1)
                //DiffMilliseconds = Sql.DiffMilliseconds(startTime, endTime),//MySql 不支持 Millisecond
                //DiffMicroseconds = Sql.DiffMicroseconds(startTime, endTime),//ex

                Now         = DateTime.Now,             //NOW()
                UtcNow      = DateTime.UtcNow,          //UTC_TIMESTAMP()
                Today       = DateTime.Today,           //CURDATE()
                Date        = DateTime.Now.Date,        //DATE(NOW())
                Year        = DateTime.Now.Year,        //YEAR(NOW())
                Month       = DateTime.Now.Month,       //MONTH(NOW())
                Day         = DateTime.Now.Day,         //DAY(NOW())
                Hour        = DateTime.Now.Hour,        //HOUR(NOW())
                Minute      = DateTime.Now.Minute,      //MINUTE(NOW())
                Second      = DateTime.Now.Second,      //SECOND(NOW())
                Millisecond = DateTime.Now.Millisecond, //?P_2 AS `Millisecond`
                DayOfWeek   = DateTime.Now.DayOfWeek,   //(DAYOFWEEK(NOW()) - 1)

                //Byte_Parse = byte.Parse("1"),//不支持
                Int_Parse   = int.Parse("1"),    //CAST(N'1' AS SIGNED)
                Int16_Parse = Int16.Parse("11"), //CAST(N'11' AS SIGNED)
                Long_Parse  = long.Parse("2"),   //CAST(N'2' AS SIGNED)
                //Double_Parse = double.Parse("3"),//N'3' 不支持,否则可能会成为BUG
                //Float_Parse = float.Parse("4"),//N'4' 不支持,否则可能会成为BUG
                //Decimal_Parse = decimal.Parse("5"),//不支持
                Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"), //N'D544BC4C-739E-4CD3-A3D3-7BF803FCE179'

                Bool_Parse     = bool.Parse("1"),                                //CAST(N'1' AS SIGNED)
                DateTime_Parse = DateTime.Parse("2014-1-1"),                     //CAST(N'2014-1-1' AS DATETIME)

                B        = a.Age == null ? false : a.Age > 1,                    //三元表达式
                CaseWhen = Case.When(a.Id > 100).Then(1).Else(0)                 //case when
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }
Example #6
0
        public static void MethodTest()
        {
            MsSqlContext context = new MsSqlContext(DbHelper.ConnectionString);

            var q = context.Query <User>();

            var      space     = new char[] { ' ' };
            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now.AddDays(1);
            var      xxxx      = q.Select(a => new
            {
                Id = a.Id,

                String_Length = a.Name.Length,
                Substring     = a.Name.Substring(0),
                Substring1    = a.Name.Substring(1),
                Substring1_2  = a.Name.Substring(1, 2),
                ToLower       = a.Name.ToLower(),
                ToUpper       = a.Name.ToUpper(),
                IsNullOrEmpty = string.IsNullOrEmpty(a.Name),
                Contains      = (bool?)a.Name.Contains("s"),
                Trim          = a.Name.Trim(),
                TrimStart     = a.Name.TrimStart(space),
                TrimEnd       = a.Name.TrimEnd(space),
                StartsWith    = (bool?)a.Name.StartsWith("s"),
                EndsWith      = (bool?)a.Name.EndsWith("s"),

                DiffYears        = DbFunctions.DiffYears(startTime, endTime),
                DiffMonths       = DbFunctions.DiffMonths(startTime, endTime),
                DiffDays         = DbFunctions.DiffDays(startTime, endTime),
                DiffHours        = DbFunctions.DiffHours(startTime, endTime),
                DiffMinutes      = DbFunctions.DiffMinutes(startTime, endTime),
                DiffSeconds      = DbFunctions.DiffSeconds(startTime, endTime),
                DiffMilliseconds = DbFunctions.DiffMilliseconds(startTime, endTime),
                //DiffMicroseconds = DbFunctions.DiffMicroseconds(startTime, endTime),//Exception

                /* No longer support method 'DateTime.Subtract(DateTime d)', instead of using 'DbFunctions.DiffXX' */
                SubtractTotalDays         = endTime.Subtract(startTime).TotalDays,
                SubtractTotalHours        = endTime.Subtract(startTime).TotalHours,
                SubtractTotalMinutes      = endTime.Subtract(startTime).TotalMinutes,
                SubtractTotalSeconds      = endTime.Subtract(startTime).TotalSeconds,
                SubtractTotalMilliseconds = endTime.Subtract(startTime).TotalMilliseconds,

                AddYears        = startTime.AddYears(1),            //DATEADD(YEAR,1,@P_0)
                AddMonths       = startTime.AddMonths(1),           //DATEADD(MONTH,1,@P_0)
                AddDays         = startTime.AddDays(1),             //DATEADD(DAY,1,@P_0)
                AddHours        = startTime.AddHours(1),            //DATEADD(HOUR,1,@P_0)
                AddMinutes      = startTime.AddMinutes(2),          //DATEADD(MINUTE,2,@P_0)
                AddSeconds      = startTime.AddSeconds(120),        //DATEADD(SECOND,120,@P_0)
                AddMilliseconds = startTime.AddMilliseconds(20000), //DATEADD(MILLISECOND,20000,@P_0)

                Now         = DateTime.Now,
                UtcNow      = DateTime.UtcNow,
                Today       = DateTime.Today,
                Date        = DateTime.Now.Date,
                Year        = DateTime.Now.Year,
                Month       = DateTime.Now.Month,
                Day         = DateTime.Now.Day,
                Hour        = DateTime.Now.Hour,
                Minute      = DateTime.Now.Minute,
                Second      = DateTime.Now.Second,
                Millisecond = DateTime.Now.Millisecond,
                DayOfWeek   = DateTime.Now.DayOfWeek,

                Int_Parse    = int.Parse("1"),
                Int16_Parse  = Int16.Parse("11"),
                Long_Parse   = long.Parse("2"),
                Double_Parse = double.Parse("3"),
                Float_Parse  = float.Parse("4"),
                //Decimal_Parse = decimal.Parse("5"),//'Decimal.Parse(string s)' is not supported now,because we don't know the precision and scale information.
                Guid_Parse = Guid.Parse("D544BC4C-739E-4CD3-A3D3-7BF803FCE179"),

                Bool_Parse     = bool.Parse("1"),
                DateTime_Parse = DateTime.Parse("2014-1-1"),

                B = a.Age == null ? false : a.Age > 1,
            }).ToList();

            ConsoleHelper.WriteLineAndReadKey();
        }