Jeux de données de requêteQuery datasets

Pour rechercher des enregistrements spécifiques dans un jeu de données, utilisez la méthode FindBy sur la table de données, écrire votre propre instruction foreach pour parcourir la collection de lignes de la table, ou utilisez LINQ to DataSet.To search for specific records in a dataset, use the FindBy method on the DataTable, write your own foreach statement to loop over the table's Rows collection, or use LINQ to DataSet.

Respect du jeu de donnéesDataset case sensitivity

Dans un jeu de données, les noms de table et de colonne respectent la casse par défaut, autrement dit, une table dans un dataset nommé « Customers » peut également être appelée « customers ».Within a dataset, table and column names are case-insensitive by default — that is, a table in a dataset called "Customers" can also be referred to as "customers." Cela correspond aux conventions d’affectation de noms dans plusieurs bases de données, y compris SQL Server.This matches the naming conventions in many databases, including SQL Server. Dans SQL Server, le comportement par défaut est que les noms des éléments de données ne peut pas être distingués uniquement par la casse.In SQL Server, the default behavior is that the names of data elements cannot be distinguished only by case.

Note

Contrairement aux jeux de données, les documents XML étant la casse, les noms d’éléments de données définis dans les schémas respectent la casse.Unlike datasets, XML documents are case-sensitive, so the names of data elements defined in schemas are case-sensitive. Par exemple, le protocole de schéma permet au schéma de définir une table appelée « Customers » et une autre table appelée « customers ».For example, schema protocol allows the schema to define a table called "Customers" and a different table called "customers." Cela peut entraîner des collisions de noms lorsqu’un schéma qui contient les éléments qui diffèrent uniquement par la casse est utilisé pour générer une classe dataset.This can result in name collisions when a schema that contains elements that differ only by case is used to generate a dataset class.

Respect de la casse, toutefois, peut être un facteur de l’interprétation des données dans le jeu de données.Case sensitivity, however, can be a factor in how data is interpreted within the dataset. Par exemple, si vous filtrez des données dans une table de dataset, les critères de recherche peuvent retourner des résultats différents selon que la comparaison respecte la casse.For example, if you filter data in a dataset table, the search criteria might return different results depending on whether the comparison is case-sensitive. Vous pouvez contrôler le respect de la casse de filtrage, la recherche et le tri en définissant le jeu de données CaseSensitive propriété.You can control the case sensitivity of filtering, searching, and sorting by setting the dataset's CaseSensitive property. Toutes les tables dans le jeu de données héritent de la valeur de cette propriété par défaut.All the tables in the dataset inherit the value of this property by default. (Vous pouvez substituer cette propriété pour chaque table individuelle en définissant la table CaseSensitive propriété.)(You can override this property for each individual table by setting the table's CaseSensitive property.)

Rechercher une ligne spécifique dans une table de donnéesLocate a specific row in a data table

Pour rechercher une ligne dans un dataset typé avec une valeur de clé primaireTo find a row in a typed dataset with a primary key value

  • Pour obtenir une ligne, appelez fortement typé FindBy méthode qui utilise la clé primaire de la table.To locate a row, call the strongly typed FindBy method that uses the table's primary key.

    Dans l’exemple suivant, la CustomerID colonne est la clé primaire de la Customers table.In the following example, the CustomerID column is the primary key of the Customers table. Cela signifie que le texte généré FindBy méthode est FindByCustomerID.This means that the generated FindBy method is FindByCustomerID. L’exemple montre comment affecter un spécifique DataRow à une variable à l’aide de l’élément généré FindBy (méthode).The example shows how to assign a specific DataRow to a variable by using the generated FindBy method.

    NorthwindDataSet.CustomersRow customersRow = 
        northwindDataSet1.Customers.FindByCustomerID("ALFKI");
    
    Dim customersRow As NorthwindDataSet.CustomersRow
    customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
    

Pour rechercher une ligne dans un dataset non typé avec une valeur de clé primaireTo find a row in an untyped dataset with a primary key value

  • Appelez le Find méthode d’un DataRowCollection collection, en passant la clé primaire en tant que paramètre.Call the Find method of a DataRowCollection collection, passing the primary key as a parameter.

    L’exemple suivant montre comment déclarer une nouvelle ligne appelée foundRow et lui attribuer la valeur de retour de la Find (méthode).The following example shows how to declare a new row called foundRow and assign it the return value of the Find method. Si la clé primaire est trouvée, le contenu de l’index de colonne 1 est affiché dans une boîte de message.If the primary key is found, the contents of column index 1 are displayed in a message box.

    string s = "primaryKeyValue";
    DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
    
    if (foundRow != null) 
    {
        MessageBox.Show(foundRow[0].ToString());
    }
    else
    {
        MessageBox.Show("A row with the primary key of " + s + " could not be found");
    }
    
    Dim s As String = "primaryKeyValue"
    Dim foundRow As DataRow = DataSet1.Tables("AnyTable").Rows.Find(s)
    
    If foundRow IsNot Nothing Then
        MsgBox(foundRow(1).ToString())
    Else
        MsgBox("A row with the primary key of " & s & " could not be found")
    End If
    

Rechercher des lignes par valeurs de colonneFind rows by column values

Pour rechercher les lignes selon les valeurs des colonnesTo find rows based on the values in any column

  • Tables de données sont créées avec le Select (méthode), qui retourne un tableau de DataRows basé sur l’expression passée à la Select (méthode).Data tables are created with the Select method, which returns an array of DataRows based on the expression passed to the Select method. Pour plus d’informations sur la création d’expressions valides, consultez la section « Syntaxe d’Expression » de la page le Expression propriété.For more information about creating valid expressions, see the "Expression Syntax" section of the page about the Expression property.

    L’exemple suivant montre comment utiliser le Select méthode de le DataTable pour rechercher des lignes spécifiques.The following example shows how to use the Select method of the DataTable to locate specific rows.

    DataRow[] foundRows;
    foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");
    
    Dim foundRows() As Data.DataRow
    foundRows = DataSet1.Tables("Customers").Select("CompanyName Like 'A%'")
    

Lorsque les tables dans un jeu de données sont liées, un DataRelation objet peut rendre les enregistrements connexes disponibles dans une autre table.When tables in a dataset are related, a DataRelation object can make the related records available in another table. Par exemple, un jeu de données contenant Customers et Orders tables peuvent être rendues disponibles.For example, a dataset containing Customers and Orders tables can be made available.

Vous pouvez utiliser un DataRelation objet à rechercher des enregistrements connexes en appelant le GetChildRows méthode d’un DataRow dans la table parente.You can use a DataRelation object to locate related records by calling the GetChildRows method of a DataRow in the parent table. Cette méthode retourne un tableau d’enregistrements enfants connexes.This method returns an array of related child records. Ou vous pouvez appeler la GetParentRow méthode d’un DataRow dans la table enfant.Or you can call the GetParentRow method of a DataRow in the child table. Cette méthode retourne un seul DataRow à partir de la table parente.This method returns a single DataRow from the parent table.

Cette page fournit des exemples d’utilisation de datasets typés.This page provides examples using typed datasets. Pour plus d’informations sur l’exploration des relations dans les datasets non typés, consultez navigation des DataRelations.For information about navigating relationships in untyped datasets, see Navigating DataRelations.

Note

Si vous travaillez dans une application Windows Forms et que vous utilisez les fonctionnalités de liaison de données pour afficher des données, le formulaire généré par le concepteur peut fournir suffisamment de fonctionnalités pour votre application.If you are working in a Windows Forms application and using the data-binding features to display data, the designer-generated form might provide enough functionality for your application. Pour plus d’informations, consultez lier des contrôles aux données dans Visual Studio.For more information, see Bind controls to data in Visual Studio. En particulier, consultez des relations dans les jeux de données.Specifically, see Relationships in Datasets.

Les exemples de code suivants montrent comment parcourir les relations dans les datasets typés.The following code examples demonstrate how to navigate up and down relationships in typed datasets. L’utilisation d’exemples de code typée DataRows (NorthwindDataSet.OrdersRow) et le FindBy généréPrimaryKey (FindByCustomerID) les méthodes pour rechercher une ligne souhaitée et retourner les enregistrements connexes.The code examples use typed DataRows (NorthwindDataSet.OrdersRow) and the generated FindByPrimaryKey (FindByCustomerID) methods to locate a desired row and return the related records. Les exemples de compiler et exécutent correctement uniquement si vous avez :The examples compile and run correctly only if you have:

  • Une instance d’un dataset nommé NorthwindDataSet avec un Customers table.An instance of a dataset named NorthwindDataSet with a Customers table.

  • Un Orders table.An Orders table.

  • Une relation nommée FK_Orders_Customersles deux tables.A relationship named FK_Orders_Customersrelating the two tables.

En outre, les deux tables doivent être remplies avec les données de tous les enregistrements à retourner.Additionally, both tables need to be filled with data for any records to be returned.

Pour retourner les enregistrements d’un enregistrement parent sélectionné enfantsTo return the child records of a selected parent record

  • Appelez le GetChildRows spécifiques à une méthode Customers données de lignes et de retourner un tableau de lignes à partir de la Orders table :Call the GetChildRows method of a specific Customers data row, and return an array of rows from the Orders table:

    string custID = "ALFKI";
    NorthwindDataSet.OrdersRow[] orders;
    
    orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers.
        FindByCustomerID(custID).GetChildRows("FK_Orders_Customers");
    
    MessageBox.Show(orders.Length.ToString());
    
    Dim customerID As String = "ALFKI"
    Dim orders() As NorthwindDataSet.OrdersRow
    
    orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID).
        GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow())
    
    MessageBox.Show(orders.Length.ToString())
    

Pour retourner l’enregistrement parent d’un enregistrement enfant sélectionnéTo return the parent record of a selected child record

  • Appelez le GetParentRow spécifiques à une méthode Orders ligne de données et retourner une seule ligne à partir de la Customers table :Call the GetParentRow method of a specific Orders data row, and return a single row from the Customers table:

    int orderID = 10707;
    NorthwindDataSet.CustomersRow customer;
    
    customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders.
        FindByOrderID(orderID).GetParentRow("FK_Orders_Customers");
    
    MessageBox.Show(customer.CompanyName); 
    
    Dim orderID As Integer = 10707
    Dim customer As NorthwindDataSet.CustomersRow
    
    customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID).
        GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow)
    
    MessageBox.Show(customer.CompanyName)
    

Voir aussiSee also