static DataSet BuildData()
{
DataTable dtClients = new DataTable("Client");
dtClients.Columns.Add("ID", typeof(int));
dtClients.Columns.Add("Nom", typeof(string));
dtClients.Columns.Add("Prenom", typeof(string));
dtClients.Columns.Add("Tel", typeof(string));
dtClients.PrimaryKey = new DataColumn[] { dtClients.Columns[0] };
dtClients.Rows.Add(new object[] { 123, "Robert", "Dupont", "123456789" });
dtClients.Rows.Add(new object[] { 456, "Pierre", "Dubois", null });
dtClients.Rows.Add(new object[] { 789, "Paul", "Durand", "987654321" });
DataTable dtCommandes = new DataTable("Commande");
dtCommandes.Columns.Add("ID", typeof(int));
dtCommandes.Columns.Add("Date", typeof(DateTime));
dtCommandes.Columns.Add("Quantite", typeof(int));
dtCommandes.Columns.Add("ClientID", typeof(int));
dtCommandes.PrimaryKey = new DataColumn[] { dtCommandes.Columns[0] };
dtCommandes.Rows.Add(new object[] { 1230, new DateTime(2007, 06, 01), 5, 123 });
dtCommandes.Rows.Add(new object[] { 4560, new DateTime(2007, 02, 01), 2, 456 });
dtCommandes.Rows.Add(new object[] { 3210, new DateTime(2007, 05, 01), 9, 123 });
dtCommandes.Rows.Add(new object[] { 6540, new DateTime(2006, 12, 01), 7, 456 });
DataSet ds = new DataSet();
ds.Tables.Add(dtClients);
ds.Tables.Add(dtCommandes);
return ds;
}
class Resultat
private int m_CommandeID;
public int CommandeID
get { return m_CommandeID; }
set { m_CommandeID = value; }
private string m_Client;
public string Client
get { return m_Client; }
set { m_Client = value; }
private int m_Quantite;
public int Quantite
get { return m_Quantite; }
set { m_Quantite = value; }
public Resultat(int CommandeID, string Client, int Quantite)
this.CommandeID = CommandeID;
this.Client = Client;
this.Quantite = Quantite;
static void DoJobOldWay1(DataSet ds)
List<Resultat> rs = new List<Resultat>();
foreach (DataRow cli in ds.Tables["Client"].Rows)
foreach (DataRow cmd in ds.Tables["Commande"].Rows)
if ((int)cmd["ClientID"] == (int)cli["ID"])
rs.Add(new Resultat((int)cmd["ID"], (string)cli["Nom"], (int)cmd["Quantite"]));
foreach(Resultat r in rs)
Console.WriteLine(r.CommandeID + " : " + r.Client + " : " + r.Quantite);
ds.Relations.Add("CommandeClient", dtClients.Columns["ID"], dtCommandes.Columns["ClientID"]);
static void DoJobOldWay2(DataSet ds)
foreach (DataRow cmd in cli.GetChildRows("CommandeClient"))
foreach (Resultat r in rs)