如何仅使用唯一的电子邮件字段选择数据?

时间:2018-12-08 19:33:12

标签: c# linq

我需要从表中选择数据。数据的“电子邮件”字段不是唯一的。现在,我只想选择带有此类电子邮件的第一项,而忽略其他项。

我尝试过:

var users = _context.Appointments.Where(p => (p.userId == userId))
            .Select(p => new MyUserModel
            {
                Id = p.Id,
                Email = p.User.Email
            });

return users.ToList();

我想使用Distinct(),但是我的元素不是唯一的,它们具有不同的id

我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

但是,如果重复此字段,那么我不需要选择此字段   元素

您可以按电子邮件分组,然后执行过滤器以保留不通过电子邮件重复的对象,然后按照您当前的逻辑进行操作。示例:

var users = _context.Appointments
                .Where(p => p.userId == userId)
                .GroupBy(p => p.User.Email) 
                .Where(g => g.Count() == 1) // if there is only one object with this email, then retain it otherwise discard it
                .Select(g => g.First())
                .Select(p => new MyUserModel
                {
                    Id = p.Id,
                    ...
                    Email = p.User.Email
                    ...
                });

return users.ToList();