Ciao,
i DataSet hanno la proprietà .Relations che ti permette di creare relazioni tra le tabelle contenute in esso. Potresti creare una relazione che lega le colonne "Cognome" delle due tabelle:
ds.Relations.Add("relazioneSuCognome", dt1.Columns["Cognome"], dt2.Columns["Cognome"]);
Poi, con il metodo .Select, estrai dalla prima tabella tutti i DataRow che recano un certo cognome.
var righe = dt1.Select("Cognome='Rossi'");
e infine fai un foreach sulle righe, invocando per ciascuna il metodo .GetChildRows("relazioneSuCognome") che ti restituisce dalla seconda tabella tutte le righe legate dalla relazione (otterrai quelle che portano lo stesso cognome).
mazinga ha scritto:
in access riesco tranquillamnente a realizzarlo ma in asp.net ho difficolta.
In effetti... ti occorrono veramente DataSet e DataTable? Queste classi si usano in ambienti disconnessi, ovvero quando la connessione al database potrebbe non esserci per gran parte del tempo. La loro peculiarità è quella di salvare i dati su file XML e ricaricarli successivamente per un loro reimpiego (o per inviarli al database quando una connessione ad esso è finalmente disponibile).
Penso che tu possa risolvere la questione con delle query SQL. E' molto più semplice eseguire una JOIN piuttosto che provare a fare la stessa cosa con DataTable e DataSet. Ecco un esempio:
using (var cmd = new SqlCommand()){
cmd.Connection = conn;
cmd.CommandText = "SELECT tabella2.codice_fiscale FROM tabella1 INNER JOIN tabella2 ON tabella1.Cognome=tabella2.Cognome WHERE tabella1.Cognome='Rossi'";
//eseguo il comando SQL e ottengo indietro un DataReader
using (var reader = cmd.ExecuteReader()){
//finché ci sono risultati da leggere...
while (reader.Read()){
//...leggo il campo "codice_fiscale"
var codice_fiscale = reader["codice_fiscale"];
}
}
}
Qui non ci sono DataTable o DataSet. Infatti, se il database è sempre disponibile si preferisce usare un DbCommand per inviare una query SQL e poi leggere i risultati con un DataReader (restituito dal metodo "ExecuteReader").
mazinga ha scritto:
Vi chiedo inoltre (escluso l'msdn di microsoft) dove posso trovare una documentazione esaustiva in italiano sui dataset.
Qui su aspitalia trovi uno speciale su ADO.NET.
http://www.aspitalia.com/focuson/603/Speciale-ADO.NET-Accesso-Dati-.NET-Framework.aspxciao,
Modificato da BrightSoul il 29 ottobre 2011 18.45 -