Поделиться через


Enumerable.ToArray<TSource> Method

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Creates an array from a IEnumerable<T>.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

Syntax

'Declaration
<ExtensionAttribute> _
Public Shared Function ToArray(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource()
public static TSource[] ToArray<TSource>(
    this IEnumerable<TSource> source
)

Type Parameters

  • TSource
    The type of the elements of source.

Parameters

Return Value

Type: array<TSource[]
An array that contains the elements from the input sequence.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerable<TSource>. When you use instance method syntax to call this method, omit the first parameter.

Exceptions

Exception Condition
ArgumentNullException

source is nulla null reference (Nothing in Visual Basic).

Remarks

The ToArray<TSource>(IEnumerable<TSource>) method forces immediate query evaluation and returns an array that contains the query results. You can append this method to your query in order to obtain a cached copy of the query results.

ToList<TSource> has similar behavior but returns a List<T> instead of an array.

Examples

The following code example demonstrates how to use ToArray<TSource> to force immediate query evaluation and return an array of results.

   Structure Package
      Public Company As String
      Public Weight As Double
   End Structure

   Sub ToArrayEx1()
      ' Create a list of Package values.
      Dim packages As New List(Of Package)(New Package() _
           {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
            New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
            New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
            New Package With {.Company = "Adventure Works", .Weight = 33.8}})

      ' Project the Company values from each item in the list
      ' and put them into an array.
      Dim companies() As String = _
          packages _
          .Select(Function(pkg) pkg.Company) _
          .ToArray()

      ' Display the results.
      Dim output As New System.Text.StringBuilder
      For Each company As String In companies
         output.AppendLine(company)
      Next
      outputBlock.Text &= output.ToString() & vbCrLf
   End Sub

   ' This code produces the following output:
   '
   ' Coho Vineyard
   ' Lucerne Publishing
   ' Wingtip Toys
   ' Adventure Works

      class Package
      {
         public string Company { get; set; }
         public double Weight { get; set; }
      }

      public static void ToArrayEx1()
      {
         List<Package> packages =
             new List<Package> 
                     { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                       new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                       new Package { Company = "Wingtip Toys", Weight = 6.0 },
                       new Package { Company = "Adventure Works", Weight = 33.8 } };

         string[] companies = packages.Select(pkg => pkg.Company).ToArray();

         foreach (string company in companies)
         {
            outputBlock.Text += company + "\n";
         }
      }

      /*
       This code produces the following output:

       Coho Vineyard
       Lucerne Publishing
       Wingtip Toys
       Adventure Works
      */

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.