【发布时间】:2021-10-25 00:23:21
【问题描述】:
我有以下对象示例:
public class Event
{
...
public NextEventStatus NextStatus { get; set; }
...
}
public class NextEventStatus
{
public List<Person> People{ get; set; }
}
public class Person
{
public string Name { get; set; }
public string Email { get; set; }
}
如果我有例如List<Event> 包含 3 个 Event 对象,每个对象中都有 NextStatus 属性,其中包含 People 类型的 List<Person> 属性,只有 1 个条目,例如:
//In Event object 1
Name = "person1"
Email = "person1email@anemail.com"
//In Event object 2
Name = "person2"
Email = "person2email@anemail.com"
//In Event object 3
Name = "person1"
Email = "person1email@anemail.com"
是否有可能获得在 Email 内包含相同 Email 属性的唯一 Event 对象,因此对于包含上述内容的对象,它将返回完整的事件对象 1 和 3,但是不是事件对象 2?所以它在列表内的列表中寻找重复项。
我已经研究过如何做到这一点,但是当您需要访问另一个列表时,您对如何执行 GroupBy 有点迷失,因为初始对象将是 List<Event>,然后有一个属性 @987654332 @ 这是一个 List<Person> 这是在其中寻找重复项的地方
var originalEventList = new List<Event>();
//Add objects to list here...
var eventListWithDuplicates = originalEventList.GroupBy(x => x.NextStatus.People) ...
【问题讨论】:
-
如果 event1 和 event 3 各有 2 个人呢?人们总是按照相同的顺序排列吗?顺序重要吗?您本质上是否想要“同一人群参加的所有活动的列表”?
-
你的意思是如果例如event1 和 event3 都有一个额外的人,但那个额外的人不是同一个人,所以两者之间只有 1 个共同的重复人?从事件列表中,我基本上需要其中存在重复的所有事件对象/
List<Person>内部的属性相同,所以如果例如只看Person的Name属性,所有相同Name属性出现多次的Event对象 -
如果e1有p1&p2,e2有p2&p3,e3有p1,那么e1&e2分享p2,e1&e3分享p3,你期望什么答案?
标签: c# list linq duplicates