簡體   English   中英

從JOIN獲取DISTINCT值

[英]Getting DISTINCT values from a JOIN

我目前有以下LINQ語句:

using (MYEntities ctx = CommonMY.GetMYContext())
{
    List<datUser> lstC = (from cObj in ctx.datUser 
                          join fs in ctx.datFS on cObj.UserID equals fs.datUser.UserID 
                          where userOrg.Contains(fs.userOrg.OrgName)
                          select cObj).ToList();

    foreach (datUser c in lstC)
    {
        Claim x = new Claim
        {
            UserID= c.userID,
            FirstName = c.FirstName,
            LastName = c.LastName,
            MiddleName = c.MiddleName,
        };
    }
}

現在它返回所有用戶,但如果他們有超過1個與之關聯的組織,則會重復這些用戶。 我怎樣才能確保它只返回不同的UserID?

每個用戶可以有多個組織,但我真的只需要返回userOrg列表中至少有1個組織的用戶。

在ToList之前,放入.Distinct()

為了響應@DJ BURB,您應該使用IEqualityComparer中的Distinct重載來最好地確保您根據每條記錄的唯一ID來執行它。

查看此博客文章以獲取示例。

使用group by。

句法:

var result= from p in <any collection> group p by p.<property/attribute> into grps
             select new 
             {
               Key=grps.Key,
               Value=grps
             } 

您將不得不調用Distinct()沒有與該命令等效的linq查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM