Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Création d'un DataTable à partir d'un DataView (ADO.NET)

Après avoir extrait des données d'une source de données et rempli un objet DataTable avec les données, vous pouvez trier, filtrer ou limiter d'une autre manière les données retournées sans devoir les extraire de nouveau. La classe DataView le permet. En outre, si vous devez créer un nouvel objet DataTableà partir de l'objet à partir de l'objet DataView , vous pouvez utiliser la méthode ToTable pour copier la totalité des lignes et des colonnes ou un sous-ensemble des données dans un nouvel objet DataTable. La méthode ToTable fournit des surcharges pour :

  • créer un objet DataTable contenant des colonnes qui sont un sous-ensemble des colonnes de l'objet DataView ;

  • Créer un objet DataTablen'incluant que des lignes distinctes de l'objet DataView, de la même manière que le mot clé DISTINCT dans Transact-SQL.

L'exemple d'application console suivant crée un objet DataTablecontenant des données de la table Person.Contact de l'exemple de base de données AdventureWorks. Ensuite, l'exemple crée un objet trié et filtré DataViewselon l'objet DataTable. Après avoir affiché le contenu des objets DataTableet DataView, l'exemple crée un nouvel objet DataTableà partir de l'objet DataView en appelant la méthode ToTable et en ne sélectionnant qu'un sous-ensemble des colonnes disponibles. Pour terminer, l'exemple affiche le contenu du nouvel objet DataTable.

Private Sub DemonstrateDataView()
    ' Retrieve a DataTable from the AdventureWorks sample database.
    ' connectionString is assumed to be a valid connection string.
    Dim adapter As New SqlDataAdapter( _
       "SELECT FirstName, LastName, EmailAddress FROM Person.Contact WHERE FirstName LIKE 'Mich%'", connectionString)
    Dim table As New DataTable

    adapter.Fill(table)
    Console.WriteLine("Original table name: " & table.TableName)
    ' Print current table values.
    PrintTableOrView(table, "Current Values in Table")

    ' Now create a DataView based on the DataTable.
    ' Sort and filter the data.
    Dim view As DataView = table.DefaultView
    view.Sort = "LastName, FirstName"
    view.RowFilter = "LastName > 'M'"
    PrintTableOrView(view, "Current Values in View")

    ' Create a new DataTable based on the DataView,
    ' requesting only two columns with distinct values
    ' in the columns.
    Dim newTable As DataTable = view.ToTable("UniqueLastNames", True, "FirstName", "LastName")
    PrintTableOrView(newTable, "Table created from 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
End Module

    private static void DemonstrateDataView()
    {
    // Retrieve a DataTable from the AdventureWorks sample database.
    // connectionString is assumed to be a valid connection string.
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT FirstName, LastName, EmailAddress " +
        "FROM Person.Contact WHERE FirstName LIKE 'Mich%'", 
           GetConnectionString());
    DataTable table = new DataTable();

    adapter.Fill(table);
    Console.WriteLine("Original table name: " + table.TableName);
    // Print current table values.
    PrintTableOrView(table, "Current Values in Table");

    // Now create a DataView based on the DataTable.
    // Sort and filter the data.
    DataView view = table.DefaultView;
    view.Sort = "LastName, FirstName";
    view.RowFilter = "LastName > 'M'";
    PrintTableOrView(view, "Current Values in View");

    // Create a new DataTable based on the DataView,
    // requesting only two columns with distinct values
    // in the columns.
    DataTable newTable = view.ToTable("UniqueLastNames",
         true, "FirstName", "LastName");
    PrintTableOrView(newTable, "Table created from DataView");
    Console.WriteLine("New table name: " + newTable.TableName);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
    }

    private static void PrintTableOrView(DataView dv, string label)
    {
    System.IO.StringWriter sw;
    string output;
    DataTable table = dv.Table;

    Console.WriteLine(label);

    // Loop through each row in the view.
    foreach (DataRowView rowView in dv)
    {
        sw = new System.IO.StringWriter();

        // Loop through each column.
        foreach (DataColumn col in table.Columns)
        {
            // Output the value of each column's data.
            sw.Write(rowView[col.ColumnName].ToString() + ", ");
        }
        output = sw.ToString();
        // Trim off the trailing ", ", so the output looks correct.
        if (output.Length > 2)
        {
            output = output.Substring(0, output.Length - 2);
        }
        // Display the row in the console window.
        Console.WriteLine(output);
    }
    Console.WriteLine();
    }

    private static void PrintTableOrView(DataTable table, string label)
    {
    System.IO.StringWriter sw;
    string output;

    Console.WriteLine(label);

    // Loop through each row in the table.
    foreach (DataRow row in table.Rows)
    {
        sw = new System.IO.StringWriter();
        // Loop through each column.
        foreach (DataColumn col in table.Columns)
        {
            // Output the value of each column's data.
            sw.Write(row[col].ToString() + ", ");
        }
        output = sw.ToString();
        // Trim off the trailing ", ", so the output looks correct.
        if (output.Length > 2)
        {
            output = output.Substring(0, output.Length - 2);
        }
        // Display the row in the console window.
        Console.WriteLine(output);
    } //
    Console.WriteLine();
    }

}

Référence

Autres ressources

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.