我需要从表中选择数据。数据的“电子邮件”字段不是唯一的。现在,我只想选择带有此类电子邮件的第一项,而忽略其他项。
我尝试过:
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
。
我该怎么做?
答案 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();