This topic has not yet been rated - Rate this topic

DataView.ToTable Method (String, Boolean, String())

Creates and returns a new DataTable based on rows in an existing DataView.

Namespace:  System.Data
Assembly:  System.Data (in System.Data.dll)
'Declaration
Public Function ToTable ( _
	tableName As String, _
	distinct As Boolean, _
	ParamArray columnNames As String() _
) As DataTable

Parameters

tableName
Type: System.String

The name of the returned DataTable.

distinct
Type: System.Boolean

If true, the returned DataTable contains rows that have distinct values for all its columns. The default value is false.

columnNames
Type: System.String()

A string array that contains a list of the column names to be included in the returned DataTable. The DataTable contains the specified columns in the order they appear within this array.

Return Value

Type: System.Data.DataTable
A new DataTable instance that contains the requested rows and columns.

Use this overloaded version of the ToTable method if you have to retrieve distinct values in a subset of available columns, specifying a new name for the returned DataTable. If you do not need distinct rows or a subset of columns, see ToTable.

The following console application example creates a DataTable, fills the DataTable with data, sorts the DataView, and finally creates a DataTable with a new name that contains just two columns, limited to rows in which all values are unique.

Private Sub DemonstrateDataView()
    ' Create a DataTable with three columns. 
    Dim table As DataTable = New DataTable("NewTable")
    Console.WriteLine("Original table name: " & table.TableName)
    Dim column As DataColumn = New DataColumn("ID", GetType(System.Int32))
    table.Columns.Add(column)

    column = New DataColumn("Category", GetType(System.String))
    table.Columns.Add(column)

    column = New DataColumn("Product", GetType(System.String))
    table.Columns.Add(column)

    column = New DataColumn("QuantityInStock", GetType(System.Int32))
    table.Columns.Add(column)


    ' Add some items. 
    Dim row As DataRow = table.NewRow()
    row.ItemArray = New Object() {1, "Fruit", "Apple", 14}
    table.Rows.Add(row)

    row = table.NewRow()
    row.ItemArray = New Object() {2, "Fruit", "Orange", 27}
    table.Rows.Add(row)

    row = table.NewRow()
    row.ItemArray = New Object() {3, "Bread", "Muffin", 23}
    table.Rows.Add(row)

    row = table.NewRow()
    row.ItemArray = New Object() {4, "Fish", "Salmon", 12}
    table.Rows.Add(row)

    row = table.NewRow()
    row.ItemArray = New Object() {5, "Fish", "Salmon", 15}
    table.Rows.Add(row)

    row = table.NewRow()
    row.ItemArray = New Object() {6, "Bread", "Croissant", 23}
    table.Rows.Add(row)

    ' Mark all rows as "accepted". Not required 
    ' for this particular example.
    table.AcceptChanges()

    ' Print current table values.
    PrintTableOrView(table, "Current Values in Table")

    Dim view As DataView = New DataView(table)
    view.Sort = "Category"
    PrintTableOrView(view, "Current Values in View")

    Dim newTable As DataTable = view.ToTable("UniqueData", _
        True, "Category", "QuantityInStock")
    PrintTableOrView(newTable, "Table created from sorted DataView")
    Console.WriteLine("New table name: " & newTable.TableName)

    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
End Sub 

Private Sub PrintTableOrView(ByVal dv As DataView, ByVal label As String)
    Dim sw As System.IO.StringWriter
    Dim output As String 
    Dim table As DataTable = dv.Table

    Console.WriteLine(label)

    ' Loop through each row in the view. 
    For Each rowView As DataRowView In dv
        sw = New System.IO.StringWriter

        ' Loop through each column. 
        For Each col As DataColumn In table.Columns
            ' Output the value of each column's data.
            sw.Write(rowView(col.ColumnName).ToString() & ", ")
        Next
        output = sw.ToString
        ' Trim off the trailing ", ", so the output looks correct. 
        If output.Length > 2 Then
            output = output.Substring(0, output.Length - 2)
        End If 
        ' Display the row in the console window.
        Console.WriteLine(output)
    Next
    Console.WriteLine()
End Sub 

Private Sub PrintTableOrView(ByVal table As DataTable, ByVal label As String)
    Dim sw As System.IO.StringWriter
    Dim output As String

    Console.WriteLine(label)

    ' Loop through each row in the table. 
    For Each row As DataRow In table.Rows
        sw = New System.IO.StringWriter
        ' Loop through each column. 
        For Each col As DataColumn In table.Columns
            ' Output the value of each column's data.
            sw.Write(row(col).ToString() & ", ")
        Next
        output = sw.ToString
        ' Trim off the trailing ", ", so the output looks correct. 
        If output.Length > 2 Then
            output = output.Substring(0, output.Length - 2)
        End If 
        ' Display the row in the console window.
        Console.WriteLine(output)
    Next
    Console.WriteLine()
End Sub

The example displays the following output in the console window:

Original table name: NewTable
Current Values in Table
1, Fruit, Apple, 14
2, Fruit, Orange, 27
3, Bread, Muffin, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
6, Bread, Croissant, 23

Current Values in View
3, Bread, Muffin, 23
6, Bread, Croissant, 23
4, Fish, Salmon, 12
5, Fish, Salmon, 15
1, Fruit, Apple, 14
2, Fruit, Orange, 27

Table created from sorted DataView
Bread, 23
Fish, 12
Fish, 15
Fruit, 14
Fruit, 27

New table name: UniqueData

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.