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); }