我有以下对象
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()...???
答案 0 :(得分:6)
SelectMany
和Disctinct
是一种方法:
clubsList
.SelectMany(_ => _.Members)
.Distinct()
.ToList();
但是为了强制分离以正常工作,您可能需要使用equality comparer重载,因为默认情况下Distinct
会比较引用类型的引用,我不知道{{1}正在填充 p>
(我认为,您不想覆盖Club.Members
的{{1}}和Equals
。