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:
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 DataTable dtImbalance = new DataTable(); DataTable dtImbalanceDetail = new DataTable(); dtImbalance = ...DataSource.Tables["Imbalance"]; dtImbalanceDetail = ...DataSource.Tables["ImbalanceDetail"];
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.
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") };
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:
Problème, ça ne compile pas, me disant que la méthode CopyToDataTable n'existe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DataTable dtFinal = query.CopyToDataTable();
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
Partager