gpt4 book ai didi

c# - 在对象列表中查找对象数据重复项

转载 作者:太空狗 更新时间:2023-10-29 18:03:16 25 4
gpt4 key购买 nike

使用 c# 3 和 .Net Framework 3.5,我有一个 Person 对象

public Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int SSN { get; set; }
}

我有一个列表:

List<Person> persons = GetPersons();

我怎样才能获得 SSN 在列表中不唯一的人员中的所有人员对象,并将它们从人员列表中删除,理想情况下将它们添加到另一个名为“List<Person> dupes”的列表中?

原始列表可能如下所示:

persons = new List<Person>();
persons.Add(new Person { Id = 1,
FirstName = "Chris",
LastName="Columbus",
SSN=111223333 }); // Is a dupe
persons.Add(new Person { Id = 1,
FirstName = "E.E.",
LastName="Cummings",
SSN=987654321 });
persons.Add(new Person { Id = 1,
FirstName = "John",
LastName="Steinbeck",
SSN=111223333 }); // Is a dupe
persons.Add(new Person { Id = 1,
FirstName = "Yogi",
LastName="Berra",
SSN=123456789 });

最终的结果是卡明斯和贝拉出现在最初的人员名单中,而哥伦布和斯坦贝克出现在被称为骗子的名单中。

非常感谢!

最佳答案

这会为您提供重复的 SSN:

var duplicatedSSN =
from p in persons
group p by p.SSN into g
where g.Count() > 1
select g.Key;

复制的列表是这样的:

var duplicated = persons.FindAll( p => duplicatedSSN.Contains(p.SSN) );

然后遍历重复项并删除它们。

duplicated.ForEach( dup => persons.Remove(dup) ); 

关于c# - 在对象列表中查找对象数据重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com