System.Linq.Expressions.Expression.ListInit C# (CSharp) Method

ListInit() public static method

Creates a ListInitExpression that uses a method named "Add" to add elements to a collection.
public static ListInit ( NewExpression newExpression, IEnumerable initializers ) : ListInitExpression
newExpression NewExpression A to set the property equal to.
initializers IEnumerable An that contains objects to use to populate the collection.
return ListInitExpression
        public static ListInitExpression ListInit(NewExpression newExpression, IEnumerable<Expression> initializers)
        {
            ContractUtils.RequiresNotNull(newExpression, nameof(newExpression));
            ContractUtils.RequiresNotNull(initializers, nameof(initializers));

            ReadOnlyCollection<Expression> initializerlist = initializers.ToReadOnly();
            if (initializerlist.Count == 0)
            {
                return new ListInitExpression(newExpression, EmptyReadOnlyCollection<ElementInit>.Instance);
            }

            MethodInfo addMethod = FindMethod(newExpression.Type, "Add", null, new Expression[] { initializerlist[0] }, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            return ListInit(newExpression, addMethod, initializers);
        }

Same methods

Expression::ListInit ( NewExpression newExpression ) : ListInitExpression
Expression::ListInit ( NewExpression newExpression, IEnumerable initializers ) : ListInitExpression
Expression::ListInit ( NewExpression newExpression, MethodInfo addMethod ) : ListInitExpression
Expression::ListInit ( NewExpression newExpression, MethodInfo addMethod, IEnumerable initializers ) : ListInitExpression

Usage Example

        public void ListInit()
        {
            var expression =
                LinqExpression.ListInit(
                    LinqExpression.New(
                        typeof(List <long>)),
                    LinqExpression.ElementInit(
                        typeof(List <long>).GetMethod("Add"),
                        LinqExpression.Constant(0L)));

            ShouldRoundrip(expression);
        }
All Usage Examples Of System.Linq.Expressions.Expression::ListInit
Expression