Bonjour,

Je n'arrive pas à trouver un exemple (clair pour moi en tout cas) afin de faire plus d'une jointure sur deux tables d'un DataSet.

En effet, je déclare mes deux DataTable comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DataTable dtImbalance = new DataTable();
DataTable dtImbalanceDetail = new DataTable();
 
dtImbalance = ...DataSource.Tables["Imbalance"];
dtImbalanceDetail = ...DataSource.Tables["ImbalanceDetail"];
Ensuite, j'ai trouvé cela pour faire avec une jointure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
EnumerableRowCollection<DataRow> imbalances = dtImbalance.AsEnumerable();
EnumerableRowCollection<DataRow> details = dtImbalanceDetail.AsEnumerable();
 
var query =
                from i in imbalances
                join d in details
                   on i.Field<DateTime>("zzz") equals d.Field<DateTime>("zzz")
                select new
                {
                   aaa = i.Field<int>("aaa"),
                   bbb = i.Field<string>("bbb"),
                   ccc = d.Field<string>("ccc"),
                   ddd = d.Field<int>("ddd")
                };
Sauf qu'ici donc, ma jointure ne doit pas se faire uniquement sur "zzz", mais sur deux autres champs "yyy" et "xxx" tous deux contenus dans mes DataSet dtImbalance et dtImbalanceDetail.

Ma première question donc : comment insérer mes deux jointures manquantes?

Je veux ensuite récupérer le résultat de ma requête et j'ai trouvé ceci comme manière de faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
DataTable dtFinal = query.CopyToDataTable();
Problème, ça ne compile pas, me disant que la méthode CopyToDataTable n'existe pas.

Deuxième question donc : Pourquoi? et que dois-je modifier dans ma requête afin que cette méthode soit reconnue ou alors comment puis-je récupérer autrement le résultat de ma requête?

Merci beaucoup pour votre aide,
Julien