使用c#3和.NetFramework3.5在对象列表中查找对象数据的重复项,我有一个Person对象publicPerson{publicintId{get;放;}publicstringFirstName{get;放;}publicstringLastName{get;放;}publicintSSN{得到;放;我有一个列表:Listpersons=GetPersons();唯一一个获取所有Person对象并将它们从Person列表中删除并理想地将它们添加到另一个名为“Listdupes”的Listdupes的人?原始列表可能如下所示:persons=newList();persons.Add(newPerson{Id=1,FirstName="Chris",LastName="Columbus",SSN=111223333});//是骗子。添加(新人{Id=1,FirstName="EE",LastName="Cummings",SSN=987654321});人。添加(新人{Id=1,FirstName="John",LastName="Steinbeck",SSN=111223333});//是骗子persons.Add(newPerson{Id=1,FirstName="Yogi",LastName="Berra",SSN=123456789});最后的结果是将卡明斯和贝拉列入原始人名单,将哥伦布和斯坦贝克列入被称为骗子的名单。太感谢了!这会得到重复的SSN:varduplicatedSSN=frompinpersonsgrouppbyp.SSNintogwhereg.Count()>1selectg.Key;重复列表如下:varduplicated=persons.FindAll(p=>duplicatedSSN.Contains(p.SSN));然后遍历重复项并删除它们。duplicated.ForEach(dup=>persons.Remove(dup));感谢gcores让我走上了正确的道路。这是我最终做的事情:varduplicatedSSN=frompinpersonsgrouppbyp.SSNintogwhereg.Count()>1selectg.Key;varduplicates=newList();foreach(vardupeSSNinduplicatedSSN){foreach(varpersoninpersons.FindAll(p=>p.SSN==dupeSSN))duplicates.Add(person);}duplicates.ForEach(dup=>persons.Remove(dup));列出actualPersons=persons。Distinct().ToList();列出duplicatePersons=persons.Except(actualPersons).ToList();好吧,如果你像这样实现IComparable:intIComparable.CompareTo(Personperson){returnthis.SSN.CompareTo(person.SSN);然后这样的比较将起作用:for(Int32i=0;i遍历列表并保留SSN/count对的哈希表。然后枚举您的表并删除SSN计数>0匹配项的SSN。字典ssnTable=newDictionary();foreach(Personpersoninpersons){try{intcount=ssnTable[person.SSN];计数++;ssnTable[person.SSN]=count;}catch(Exceptionex){ssnTable.Add(person.SSN,1);}}//在这里遍历ssnTable并移除entry(itemcount)>1的itemsperson必须是List吗?如果是字典呢?varpersons=newDictionary();...//对于要添加到列表中的每个人:varperson=newPerson{...};如果(!persons.ContainsKey(person.SSN)){人。添加(人。SSN,人);}//如果你绝对肯定有一个列表:usingSystem.Linq;列表personsList=persons.Values.ToList();碰巧有相同属性的不同实例),使用HashSet可能会获得更好的性能。基于上面的@gcores建议。如果要将重复SSN的单个对象添加回人员列表,请添加以下行:IEnumerable>query=duplicated.GroupBy(d=>d.SSN,d=>d);foreach(查询中的IGroupingduplicateGroup){人员。添加(duplicateGroup.First());我的假设是您可能只想删除重复项减去重复项的原始值。以上就是C#学习教程:在对象列表中查找对象数据重复项。如果对你有用,需要进一步了解C#学习教程,希望大家多加关注---本文收集自网络,不代表侵权,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
