Esempio n. 1
0
        public M Select(Expression <Func <M, bool> > expression)
        {
            ConditionBuilder builder = this.GetBuilder(expression);
            string           text    = "select top 1 * from " + this.type.Name + " {0} ";

            text = string.Format(text, builder.Condition);
            DataTable dataTable = this.DBbase.GetDataTable(text, builder.Arguments.ToArray());
            IList <M> list      = ConvertHelper.GetList <M>(dataTable);
            M         result    = default(M);

            if (list != null && list.Count > 0)
            {
                result = list[0];
            }
            return(result);
        }
Esempio n. 2
0
        public List <M> GetListRow <TKey, F>(Expression <Func <M, bool> > expression, Expression <Func <M, TKey> > orderby, bool IsDesc, int pStart, int pSize, Expression <Func <M, F> > fields)
        {
            ConditionBuilder builder = this.GetBuilder(expression);
            string           str     = string.Empty;

            if (orderby != null)
            {
                str = " order by " + ((MemberExpression)orderby.Body).Member.Name + (IsDesc ? " desc " : " asc ");
            }
            string str2 = this.FieldsByNew <F>(fields);

            string sql = string.Format("select " + str2 + ", ROW_NUMBER() OVER({1}) AS RowNumber  from " + this.type.Name + " {0} ", builder.Condition, str);

            if (pSize > 0)
            {
                sql = string.Concat("select * from (", sql, ") tttx where RowNumber Between ", (pStart - 1) * pSize + 1, " and ", pStart * pSize);
            }
            DataTable dataTable = this.DBbase.GetDataTable(sql, builder.Arguments.ToArray());

            builder.Arguments = null;
            return(ConvertHelper.GetList <M>(dataTable));
        }
Esempio n. 3
0
        private object ProviderCallBack(Expression expression, Type returnType)
        {
            MethodCallExpression methodCallExpression = (MethodCallExpression)expression;
            ConditionBuilder     conditionBuilder     = new ConditionBuilder();

            conditionBuilder.Build(expression, this.type, true);
            object obj = null;
            string name;

            if ((name = methodCallExpression.Method.Name) != null)
            {
                if (_sqlKeywords == null)
                {
                    _sqlKeywords = new Dictionary <string, int>(8)
                    {
                        {
                            "FirstOrDefault",
                            0
                        },

                        {
                            "First",
                            1
                        },

                        {
                            "Select",
                            2
                        },

                        {
                            "Skip",
                            3
                        },

                        {
                            "Take",
                            4
                        },

                        {
                            "OrderByDescending",
                            5
                        },

                        {
                            "OrderBy",
                            6
                        },

                        {
                            "Count",
                            7
                        }
                    };
                }
                int num;
                if (_sqlKeywords.TryGetValue(name, out num))
                {
                    DataTable dataTable;
                    switch (num)
                    {
                    case 0:
                    case 1:
                    {
                        dataTable = this.DBbase.GetDataTable(conditionBuilder.Condition, conditionBuilder.Arguments.ToArray());
                        object obj2;
                        if (AnonymouseHelper.IsAnonyousType(returnType))
                        {
                            obj2 = ConvertHelper.GetAnonymous(dataTable, returnType);
                        }
                        else
                        {
                            obj2 = ConvertHelper.GetList(dataTable, returnType);
                        }
                        IEnumerable enumerable = (IEnumerable)obj2;
                        IEnumerator enumerator = enumerable.GetEnumerator();
                        try
                        {
                            if (enumerator.MoveNext())
                            {
                                object current = enumerator.Current;
                                obj = current;
                            }
                            return(obj);
                        }
                        finally
                        {
                            IDisposable disposable = enumerator as IDisposable;
                            if (disposable != null)
                            {
                                disposable.Dispose();
                            }
                        }
                        break;
                    }

                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                        break;

                    case 7:
                        obj = this.DBbase.GetSingle(conditionBuilder.Condition, conditionBuilder.Arguments.ToArray());
                        obj = Convert.ToInt32(obj);
                        return(obj);

                    default:
                        return(obj);
                    }
                    Type[] genericArguments = returnType.GetGenericArguments();
                    returnType = ((genericArguments.Length == 0) ? this.type : genericArguments[0]);
                    dataTable  = this.DBbase.GetDataTable(conditionBuilder.Condition, conditionBuilder.Arguments.ToArray());
                    if (AnonymouseHelper.IsAnonyousType(returnType))
                    {
                        obj = ConvertHelper.GetAnonymous(dataTable, returnType);
                    }
                    else
                    {
                        obj = ConvertHelper.GetList(dataTable, returnType);
                    }
                    obj = (IEnumerable)obj;
                }
            }
            return(obj);
        }