想要找到个人是经理或成员的独特团队

时间:2015-12-15 07:28:30

标签: c# linq

我有一个团队对象,如下所示:

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)...???

2 个答案:

答案 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();