2011-04-14 26 views
0

我有一個返回數據的LINQ查詢,我想根據通常相同的兩個字段(fkProfileID和fkOrgID)進行過濾。我只想在fkProfileID和fkOrgID匹配時顯示1條記錄,所以它類似於執行不同的SQL,但是在2個字段而不是1個字段。兩個字段上的LINQ截然不同

我的數據會看起來像這樣(等領域已被刪除):

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

所以在這裏我只想返回如下:

fkProfileID fkOrgID 
1   1001 
2   1001 
1   1005 

這是我目前的LINQ(這兩個領域以上是在tblUserRights),我該如何改變它來做到這一點?

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(); 

回答

0

您可以查詢後使用.Distinct()

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