public LambdaExpression MakeMembersInit(Type entityType, params string[] names)
        {
            ParameterExpression x = Expression.Parameter(entityType, "x");

            MemberExpression[] members = new MemberExpression[names.Length];
            Entity             e       = new Entity();


            for (int i = 0; i < members.Length; i++)
            {
                members[i] = Expression.PropertyOrField(x, names[i]);
                e.AddPropertyOrField(members[i]);
            }

            Type resultType = m_code_provider.GetType(e);


            MemberAssignment[] assignments = new MemberAssignment[members.Length];


            for (int i = 0; i < members.Length; i++)
            {
                MemberExpression me = members[i];
                var mi = resultType.GetMember(me.Member.Name);

                if (mi.Length > 0)
                {
                    assignments[i] = Expression.Bind(mi[0], me);
                }
            }

            return(Expression.Lambda(Expression.MemberInit(Expression.New(resultType), assignments), x));
        }
        public IQueryable CreateQuery(string entityName)
        {
            Type entityType = m_code_provider.GetType(m_data_provider.GetMetadata(), entityName);

            return(Activator.CreateInstance(typeof(ObjectQuery <>).MakeGenericType(entityType), this) as IQueryable);
        }