我有一个团队对象,如下所示:
public class Team
{
public int Id { get; set; }
public string Name { get; set; }
public Guid ManagerId { get; set; }
public List<Guid> Members { get; set; }
}
一个人可以同时兼任经理和团队成员。我想得到一个独特的团队列表,其中一个人是经理或成员。
说,我有John Doe的GUID。我想找到他所关联的所有团队,并且我在List<Team> teams
中拥有所有数据。我知道如何找到约翰的经理所有团队,但不知道如何包括约翰所在的团队。
var johnsTeams = teams.Where(x => x.ManagerId == johnsId)...???
答案 0 :(得分:1)
你快到了。您只需要检查Members
列表是否包含John的Guid。这可以使用x.Members.Contains(johnsId)
。
var johnsTeams = teams.Where(x => x.ManagerId == johnsId || x.Members.Contains(johnsId)).ToList();
答案 1 :(得分:1)
您可以使用||
包含john所属的团队,还可以包含.Distinct()
以删除重复项(“John是经理以及团队成员”):因此您的代码将如下所示:
var johnsTeams = teams.Where(x => x.ManagerId == johnsId || x.Members.Contains(johnsId)).Distinct().ToList();