public void SqlConvertExpressionTest()
        {
            var sql  = "Name = 'a.b.('";
            var exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);

            sql  = "Name = 'a.b.(\\''  ";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);

            sql  = "Time >= '2020-11-19T18:51:08.407' ";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);

            sql  = "Name='' and Age> 18";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
            Expression <Func <UserDto, bool> > exp2 = px => px.Name == "" && px.Age > 18;

            Assert.AreEqual(exp1.ToString(), exp2.ToString());

            sql  = "( Name ='wyl' and (Age>=18 or Age<22) or (( Name.contains('xxxy') or Name= 'wyl' ) and (Age > 18 or Age <=50)))";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
            exp2 = px => (px.Name == "wyl" && (px.Age >= 18 || px.Age < 22) || ((px.Name !.Contains("xxxy") || px.Name == "wyl") && (px.Age > 18 || px.Age <= 50)));
            Assert.AreEqual(exp1.ToString(), exp2.ToString());

            sql  = "Name.contains('') and Age> 22";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
            exp2 = px => px.Name.Contains("") && px.Age > 22;
            Assert.AreEqual(exp1.ToString(), exp2.ToString());

            sql  = "( Name= 'wyl'      and  (Age>=18 or Age<22) or  ( ( Name.contains('xxxy')  or Name= 'wyl' ) and (Age > 18 or Age<=50   ))  )";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
            sql  = "(Name='' and Age>18 or    Age=98  )";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
            sql  = "Name='' and Age>18";
            exp1 = SQLFilterConvertHelper.ConvertToExpression <UserDto>(sql);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 条件查询(SQL形式)
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="sqlwhere"></param>
        /// <returns></returns>
        public static IQueryable <TSource> QueryBySQLWhere <TSource>(this IQueryable <TSource> source, string sqlwhere)
            where TSource : class, new()
        {
            var lambda = SQLFilterConvertHelper.ConvertToExpression <TSource>(sqlwhere);

            return(source.Where(lambda));
        }