Expression.ListInit Method (NewExpression, IEnumerable<ElementInit>)
Creates a ListInitExpression that uses specified ElementInit objects to initialize a collection.
Assembly: System.Core (in System.Core.dll)
public static ListInitExpression ListInit( NewExpression newExpression, IEnumerable<ElementInit> initializers )
Parameters
- newExpression
-
Type:
System.Linq.Expressions.NewExpression
A NewExpression to set the NewExpression property equal to.
- initializers
-
Type:
System.Collections.Generic.IEnumerable<ElementInit>
An IEnumerable<T> that contains ElementInit objects to use to populate the Initializers collection.
Return Value
Type: System.Linq.Expressions.ListInitExpressionA ListInitExpression that has the NodeType property equal to ListInit and the NewExpression and Initializers properties set to the specified values.
| Exception | Condition |
|---|---|
| ArgumentNullException | newExpression or initializers is null. -or- One or more elements of initializers are null. |
| ArgumentException | newExpression.Type does not implement IEnumerable. |
The Type property of newExpression must represent a type that implements IEnumerable.
The Type property of the resulting ListInitExpression is equal to newExpression.Type.
The following example demonstrates how to use the ListInit(NewExpression, ElementInit[]) method to create a ListInitExpression that represents the initialization of a new dictionary instance with two key-value pairs.
string tree1 = "maple"; string tree2 = "oak"; System.Reflection.MethodInfo addMethod = typeof(Dictionary<int, string>).GetMethod("Add"); // Create two ElementInit objects that represent the // two key-value pairs to add to the Dictionary. System.Linq.Expressions.ElementInit elementInit1 = System.Linq.Expressions.Expression.ElementInit( addMethod, System.Linq.Expressions.Expression.Constant(tree1.Length), System.Linq.Expressions.Expression.Constant(tree1)); System.Linq.Expressions.ElementInit elementInit2 = System.Linq.Expressions.Expression.ElementInit( addMethod, System.Linq.Expressions.Expression.Constant(tree2.Length), System.Linq.Expressions.Expression.Constant(tree2)); // Create a NewExpression that represents constructing // a new instance of Dictionary<int, string>. System.Linq.Expressions.NewExpression newDictionaryExpression = System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>)); // Create a ListInitExpression that represents initializing // a new Dictionary<> instance with two key-value pairs. System.Linq.Expressions.ListInitExpression listInitExpression = System.Linq.Expressions.Expression.ListInit( newDictionaryExpression, elementInit1, elementInit2); Console.WriteLine(listInitExpression.ToString()); // This code produces the following output: // // new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"), // Void Add(Int32, System.String)(3,"oak")}
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1