想要返回会员列表

时间:2015-12-15 06:46:24

标签: c# linq

我有以下对象

public class Club
{
    private List<Person> _Members = new List<Person>();

    public int Id { get; set; }
    public string Name { get; set; }
    public List<Person> Members
    {
        get { return _Members; }
        set { _Members = value; }
    }
}

现在我有一个名为clubsList的List<Club>,我希望生成一个List<Person>,其中应包含一个唯一成员列表。

例如,约翰史密斯可能是俱乐部A和俱乐部B的成员,因此他将成为两个俱乐部的会员名单。但是,我只想在我的名单中使用约翰史密斯一次。

我正在尝试使用LINQ生成此列表,我很感激它的一些帮助。

var uniqueMembers = clubsList.Select(x => x.Members).ToList()...???

1 个答案:

答案 0 :(得分:6)

SelectManyDisctinct是一种方法:

clubsList
    .SelectMany(_ => _.Members)
    .Distinct()
    .ToList();

但是为了强制分离以正常工作,您可能需要使用equality comparer重载,因为默认情况下Distinct会比较引用类型的引用,我不知道{{1}正在填充

(我认为,您不想覆盖Club.Members的{​​{1}}和Equals