Conjuntos de dados de consulta
Para procurar por registros específicos em um conjunto de dados, use o método FindBy na DataTable, ou você pode escrever seu próprio loop foreach sobre a coleção de linhas da tabela ou você pode usar LINQ to DataSet. LINQ to DataSet.
Sensibilidade de caso do conjunto de dados
Dentro de um conjunto de dados, nomes de tabela e coluna são por padrão de maiúsculas e minúsculas — ou seja, uma tabela em um conjunto de dados chamado "Clientes" também pode ser chamada como "customers". Isso coincide com as convenções de nomenclatura em vários bancos de dados, incluindo o comportamento padrão do SQL Server, onde os nomes dos elementos de dados não podem ser diferenciados apenas por caso.
Dica
Ao contrário de conjuntos de dados, documentos XML diferenciam maiúsculas de minúsculas, para que os nomes de elementos de dados definidos em esquemas diferenciam maiúsculas de minúsculas. Por exemplo, o protocolo de esquema permite que o esquema definir uma tabela chamada "Clientes" e uma tabela diferente chamada "clientes". Isso pode resultar em conflitos de nome quando um esquema que contém elementos que diferem somente no caso é usado para gerar uma classe de conjunto de dados.
No entanto, diferenciação de maiúscula e minúsculas pode ser um fator de como os dados são interpretados no conjunto de dados. Por exemplo, se você filtrar dados em uma tabela de conjunto de dados, os critérios de pesquisa podem retornar resultados diferentes dependendo se a comparação diferencia maiúsculas de minúsculas ou não. Você pode controlar as maiúsculas e minúsculas de filtragem, pesquisa e classificação definindo o conjunto de dados CaseSensitive propriedade. Todas as tabelas no dataset herdam o valor dessa propriedade por padrão. (Você pode substituir essa propriedade para cada tabela individual, definindo a tabela CaseSensitive propriedade.)
Para localizar uma linha específica em uma tabela de dados
Para localizar uma linha em um dataset digitado com um valor de chave primária
Chamar fortemente tipado
FindBy
método que usa a chave primária da tabela para localizar uma linha.No exemplo a seguir, o
CustomerID
coluna é a chave primária daCustomers
tabela isso geradoFindBy
método éFindByCustomerID
. O exemplo mostra como atribuir um determinado DataRow a uma variável usando geradoFindBy
método.NorthwindDataSet.CustomersRow customersRow = northwindDataSet1.Customers.FindByCustomerID("ALFKI");
Dim customersRow As NorthwindDataSet.CustomersRow customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
Para localizar uma linha em um dataset não tipado com um valor de chave primária
Chamar o Find método de um DataRowCollection coleção, passando a chave primária como um parâmetro.
O exemplo a seguir mostra como declarar uma nova linha chamada
foundRow
e atribua a ela o valor de retorno de Find método. Se a chave primária for encontrada, o conteúdo do índice da coluna 1 é exibido em uma caixa de mensagem.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
Localizando linhas por valores de coluna
Para localizar linhas com base nos valores em qualquer coluna
Tabelas de dados são criadas com um Select método que retorna uma matriz de DataRows com base na expressão passada para o Select método. Para obter mais informações sobre como criar expressões válidas, consulte a seção "Sintaxe de expressões" da página a Expression propriedade.
O exemplo a seguir mostra como usar o Select método o DataTable para localizar linhas específicas.
DataRow[] foundRows; foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");
Dim foundRows() As Data.DataRow foundRows = DataSet1.Tables("Customers").Select("CompanyName Like 'A%'")
Acessando registros relacionados
Quando tabelas em um dataset estão relacionadas, um DataRelation objeto pode tornar disponíveis os registros relacionados em outra tabela. Por exemplo, um conjunto de dados que contém Customers
e Orders
tabelas podem ser disponibilizadas.
Você pode usar um DataRelation objeto para localizar registros relacionados chamando o GetChildRows método de um DataRow na tabela pai; esse método retorna uma matriz de registros filho relacionados. Ou você pode chamar o GetParentRow método de um DataRow na tabela filho; esse método retorna uma única DataRow da tabela pai.
Esta página de Ajuda fornece exemplos usando datasets tipados. Para obter informações sobre navegar em relações em datasets não tipados, consulte Navegando em DataRelations.
Dica
Se você estiver trabalhando em um aplicativo Windows Forms e usando os recursos de associação de dados para exibir dados, o formulário gerado pelo designer pode fornecer funcionalidade suficiente para seu aplicativo. Para obter mais informações, consulte as páginas no Associar controles a dados no Visual Studio, especificamente Como exibir dados relacionados em um Aplicativo do Windows Forms e Instruções passo a passo: exibindo dados relacionados em um Windows Form.
Os exemplos de código a seguir demonstram navegando para cima e para relações em datasets tipados. Eles use tipado DataRows (NorthwindDataSet.OrdersRow
) e gerado FindBy
PrimaryKey (FindByCustomerID
) métodos para localizar uma linha desejada e retornar os registros relacionados. Os exemplos compilam e executam corretamente somente se você tiver:
Uma instância de um dataset chamado
NorthwindDataSet
com umCustomers
tabelaUm
Orders
tabelaUma relação nomeada
FK_Orders_Customers
relacionando as duas tabelas disponíveis ao escopo do seu código
Além disso, ambas as tabelas precisam ser preenchidas com dados para quaisquer registros a serem retornados.
Para retornar os registros de um registro pai selecionado filho
Chamar o GetChildRows método de um determinado
Customers
dados de linha e retornar uma matriz de linhas doOrders
tabela: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())
Para retornar o registro pai de um registro filho selecionado
Chamar o GetParentRow método de um determinado
Orders
dados de linha e retornar uma única linha doCustomers
tabela: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)