从JOIN中获取DISTINCT值
本文关键字:DISTINCT 获取 JOIN | 更新日期: 2023-09-27 17:58:27
我当前有以下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列表中返回至少有一个组织的用户。
就在ToList之前,放入.Distinct()
。
作为对@DJ BURB的回应,您可能应该使用Distinct重载,该重载接收IEqualityComparer,以最好地确保您是根据每条记录的唯一id来执行此操作的。
看看这篇博客文章作为一个例子。
按.使用组
语法:
var result= from p in <any collection> group p by p.<property/attribute> into grps
select new
{
Key=grps.Key,
Value=grps
}
您将不得不调用Distinct()
,没有与该命令等效的linq查询。