0

我目前有以下 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 个与他们关联的组织,它会复制他们。我如何确保它只返回不同的用户 ID?

每个用户可以有多个组织,但我真的只需要从 userOrg 列表中返回至少有 1 个组织的用户。

4

3 回答 3

1

在您的 ToList 之前,放入.Distinct().

作为对@DJ BURB 的回应,您可能应该使用接收 IEqualityComparer 的 Distinct 重载,以最好地确保您是根据每条记录的唯一 ID 执行此操作的。

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

于 2013-02-08T17:14:07.303 回答
1

使用分组。

句法:

var result= from p in <any collection> group p by p.<property/attribute> into grps
             select new 
             {
               Key=grps.Key,
               Value=grps
             } 
于 2013-02-08T17:21:40.397 回答
0

您将不得不调用Distinct()没有与该命令等效的 linq 查询

于 2013-02-08T17:14:37.777 回答