[英]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.