2011-04-14 6 views
0

J'ai une requête LINQ qui renvoie des données et que je veux filtrer en fonction de 2 champs (fkProfileID et fkOrgID) qui sont souvent les mêmes. Je veux seulement montrer 1 enregistrement quand fkProfileID et fkOrgID correspondent, donc c'est comme faire un SQL distinct, mais sur 2 champs plutôt qu'un.LINQ distinct sur 2 champs

Mes données ressemblera à ceci (les autres champs ont été enlevés):

fkProfileID fkOrgID 
1   1001 
1   1001 
1   1001 
2   1001 
2   1001 
1   1005 
1   1005 

Donc ici, je veux revenir seulement ce qui suit:

fkProfileID fkOrgID 
1   1001 
2   1001 
1   1005 

Voici mon LINQ actuel (les deux champs ci-dessus sont dans tblUserRights), comment dois-je le changer pour le faire?

List<ProfileJSON> lstProfiles = (from r in _database.tblUserRights 
             join p in _database.LuProfiles on r.fkProfileID equals p.luProfileID 
             join o in _database.tblOrganisations on r.fkOrgID equals o.pkOrgID 
             where r.fkUniqueID == intPKUserID 
             orderby o.OrgDesc, p.ProfileName 

             select new ProfileJSON 
             { 
              SiteID = o.pkOrgID, 
              SiteName = o.OrgDesc, 
              ProfileID = p.luProfileID, 
              ProfileName = p.ProfileName 
             }).ToList(); 

Répondre

0

Vous pouvez utiliser .Distinct() après votre requête

List<ProfileJSON> lstProfiles = (from r in _database.tblUserRights 
            join p in _database.LuProfiles on r.fkProfileID equals p.luProfileID 
            join o in _database.tblOrganisations on r.fkOrgID equals o.pkOrgID 
            where r.fkUniqueID == intPKUserID 
            orderby o.OrgDesc, p.ProfileName 

            select new ProfileJSON 
            { 
             SiteID = o.pkOrgID, 
             SiteName = o.OrgDesc, 
             ProfileID = p.luProfileID, 
             ProfileName = p.ProfileName 
            }).Distinct().ToList(); //Distinct here