J'ai Table1 et Table2 sous la forme de IEnumerable<DataRow>
. Les deux tables ont des colonnes Column1
et Column2
.Groupe par colonnes multiples et nombre
Je souhaite faire une jointure externe gauche sur Column1
et souhaite obtenir le nombre de lignes présentes dans Table2
et charger les enregistrements dans un DataTable.
J'ai essayé la requête suivante
var query = from p in Table1
join q in Table2 on p.Field<string>("Column1") equals q.Field<string>("Column1") into pq
from xyz in pq.DefaultIfEmpty()
group xyz by new { Col1 = p.Field<string>("Column1"), Col2 = p.Field<string>("Column2") } into g
select dtFinalData.LoadDataRow(new object[]
{
g.Key.Col1,
g.Key.Col2,
g.Count
}, false);
Depuis le « g » représente les données groupées le g.count retourne 1 pour les lignes qui ne dispose pas des entrées dans le tableau 2. Je voudrais revenir « 0 » pour ces rangées.
entrée:
Tableau 1
Col1Val1 Col2Val1
Col1Val2 Col2Val2
Tableau 2
Col1Val1 Col2Val1
Col1Val1 Col2Val1
Courant de sortie:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 1
Résultats attendus:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 0
Je l'ai regardé LINQ - Left Join, Group By, and Count mais je ne pouvais pas appliquer la même dans ma requête ...
Pouvez-vous me aider à résoudre cette requête?
Merci David! Votre requête fonctionne. Je suis toujours curieux de savoir s'il y a moyen de faire quelque chose de similaire à la requête SQL suivante sélectionnez a.Column1, a.Column2, Count (b.Column1) de table1 a Joindre externe table2 b sur a.Column1 = b.Column1 et a.Column2 = b.Column2 groupe Par a.Column1, a.Column2 –
Ajout de plus de solutions ... il est à noter que la dernière solution donnera des résultats différents s'il y a des doublons dans le tableau1. –
Merveilleux! Merci beaucoup David. –