2012-04-02 7 views
1

J'essaye et jusqu'à présent ne pas réussir à faire une requête avec un groupe par-déclaration.requête avec groupe par

J'ai une table avec différents types d'activités (tblExcursion) et une table avec le planifié (tblReservationDetail). Dans tblExcursion, j'ai une colonne 'GroupName'. Il y a plusieurs activités sous un GroupName (par exemple kayak, voile, waterpolo est un nom de groupe Watersports).

Maintenant je veux récupérer le nombre de participants par GroupName (pas par activité/excursion!). Mais je ne reçois pas là avec .GroupBy() ou d'un groupe ... par

Ceci est la requête où j'utilise le activityName et non le nom de groupe:

var vAllExcursions = (from oExcursion in clsApplication._oDBConnection.tblExcursions 
         select oExcursion).ToList(); 

foreach (tblExcursion EXitem in vAllExcursions) 
{ 
    var vAllExcursionsPerType = (from oReservationDetail in clsApplication._oDBConnection.tblReservationDetails 
             where oReservationDetail.StartTime.Date.Year == this.cboYear.getSelectedID() 
             && oReservationDetail.StartTime.Date.Month == this.cboMonth.getSelectedID() 
             && oReservationDetail.ExcursionID == EXitem.ID 
             select oReservationDetail).ToList(); 
} 

Here I fill my datagrid 

Répondre

1

Vous voulez groupe par le GroupName à obtenir les groupes:

var vAllExcursions = clsApplication._oDBConnection.tblExcursions 
    .GroupBy(ex => ex.GroupName) 
    .ToList(); 

Puis dans votre boucle interne, trouver des réserves connexes en vérifiant si l'ExcursionID correspond à tout id dans la liste associée au groupe:

foreach (var EXitemGroup in vAllExcursions) 
{ 
    var excursionIds = EXitemGroup.Select (exg => exg.ID).ToArray(); 
    ... 
     && excursionIds.Contains(oReservationDetail.ExcursionID) 
    ... 
} 
+0

Je reçois une erreur: La séquence locale ne peut pas être utilisée dans les implémentations LINQ à SQL des opérateurs de requête à l'exception de l'opérateur Contient. – bflydesign

+0

Ah. Oui, je testais avec des listes de données en ligne, laissez-moi tester avec backend SQL. – mellamokb

+0

Voir mise à jour, devrait fonctionner correctement maintenant pour LINQ-to-SQL. – mellamokb