Dotaz datové sady
K vyhledání konkrétních záznamů v datové sadě, použijte metodu FindBy ve DataTable, nebo můžete napsat vlastní smyčka typu foreach prostřednictvím kolekce řádků v tabulce nebo můžete použít LINQ to DataSet. LINQ na DataSet.
Rozlišování datové sady
V rámci datové sady, názvy tabulek a sloupců jsou ve výchozím nastavení velká a malá písmena – to znamená, tabulky v datové sadě názvem Zákazníci"lze také odkazovat jako zákazníci." To odpovídá konvence pojmenování v mnoha databází, včetně výchozí chování systému SQL Server, kde názvy prvků dat nelze rozlišit pouze případu.
Poznámka
Na rozdíl od datové sady jsou malá a velká písmena, dokumentů XML, takže názvy datové prvky, které jsou definovány v schémata jsou malá a velká písmena. Například protokol schématu umožňuje schématu můžete definovat tabulku s názvem "Zákazníci" a jiné tabulky názvem Zákazníci." To může vést k kolize názvů po schématu, který obsahuje prvky, které se liší pouze v případě slouží ke generování třídy datové sady.
Rozlišování velkých a malých písmen však může být faktorem jak data interpretována v rámci datové sady. Například pokud filtrování dat v tabulce dataset kritéria hledání může vrátit různé výsledky v závislosti na tom, zda je porovnání velká a malá písmena či nikoli. Můžete ovládat rozlišování velikosti písmen filtrování, vyhledávání a třídění nastavením datovou sadu CaseSensitive vlastnost. Podle výchozího nastavení dědí všechny tabulky v datové sadě hodnota této vlastnosti. (Tato vlastnost pro každou jednotlivou tabulku lze přepsat nastavením v tabulce CaseSensitive vlastnost.)
Vyhledání konkrétní řádek v tabulce dat
K vyhledání řádku v typové datové sady s hodnotou primárního klíče
Volání silného typu
FindBy
metody, která používá primární klíč v tabulce vyhledejte řádek.V následujícím příkladu
CustomerID
primární klíč je sloupecCustomers
tabulky, takže generovanéFindBy
Metoda jeFindByCustomerID
. Tento příklad ukazuje, jak přiřadit konkrétní DataRow proměnné pomocí generovanéFindBy
Metoda.NorthwindDataSet.CustomersRow customersRow = northwindDataSet1.Customers.FindByCustomerID("ALFKI");
Dim customersRow As NorthwindDataSet.CustomersRow customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
K vyhledání řádku v netypové datové sady s hodnotou primárního klíče
Volání Find metodu DataRowCollection kolekce předávání primárního klíče jako parametr.
Následující příklad ukazuje, jak deklarovat nový řádek, který se nazývá
foundRow
a přiřaďte je vrácená hodnota Find Metoda. Pokud je nalezen primární klíč, obsah index sloupce 1 jsou zobrazeny v okně se zprávou.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
Hledání řádky podle hodnoty sloupců
Chcete-li najít řádky na základě hodnot v jakémkoli sloupci
Tabulky dat jsou vytvořeny pomocí Select metodu, která vrací pole DataRows založené na výrazu předat Select Metoda. Další informace o vytváření platné výrazy, naleznete v části "Syntaxe výrazu" stránky Expression vlastnost.
Následující příklad ukazuje způsob použití Select metodu DataTable k vyhledání konkrétních řádků.
DataRow[] foundRows; foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");
Dim foundRows() As Data.DataRow foundRows = DataSet1.Tables("Customers").Select("CompanyName Like 'A%'")
Přístup k souvisejících záznamů
Pokud v datové sadě tabulkami, DataRelation objektu můžete zpřístupnit souvisejících záznamů v druhé tabulce. Například datové sady obsahujícího Customers
a Orders
tabulky může být k dispozici.
Můžete použít DataRelation objektu k vyhledání souvisejících záznamů pomocí volání GetChildRows metodu DataRow v nadřazené tabulce; tato metoda vrátí pole související podřízené záznamy. Nebo můžete volat GetParentRow metodu DataRow v podřízené tabulce; tato metoda vrátí jednu DataRow z nadřazené tabulky.
Tato stránka nápovědy poskytuje příklady použití typové datové sady. Informace týkající se přechodu vztahy v datových sadách bez typu naleznete v tématu Navigating DataRelations.
Poznámka
Pokud pracujete v aplikaci Windows Forms a pomocí funkce vazby dat pro zobrazení dat, návrháře generovaném formuláři poskytují dostatek funkce pro vaši aplikaci. Další informace naleznete na stránkách na Vytvoření vazby ovládacích prvků k datům v sadě Visual Studio, konkrétně Postupy: Zobrazení souvisejících dat ve formulářové aplikaci Windows a Návod: Zobrazování souvisejících dat ve formuláři Windows.
Následující příklady kódu ukazují navigace nahoru a dolů vztahy v typových datových sadách. Jejich použití zadali DataRows (NorthwindDataSet.OrdersRow
) a generované FindBy
PrimaryKey (FindByCustomerID
) metody pro vyhledání požadovaného řádku a vrácení souvisejících záznamů. Příklady kompilaci a spuštění správně pouze v případě, že máte:
Instance datovou sadu s názvem
NorthwindDataSet
sCustomers
tabulkyOrders
TabulkyRelace s názvem
FK_Orders_Customers
týkající se dvou tabulek, které jsou k dispozici oboru kódu
Dále je třeba obou tabulek vyplněn data pro všechny záznamy mají být vráceny.
Vrátit podřízené záznamy vybraný nadřazený záznam
Volání GetChildRows Metoda konkrétní
Customers
řádek dat a vrácení pole řádků zOrders
tabulky: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())
Chcete-li vrátit nadřazený záznam vybraný podřízený záznam
Volání GetParentRow Metoda konkrétní
Orders
řádek dat a vrátí jeden řádek zCustomers
tabulky: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)