2016-05-04 186 views
0

我有一个像列表对象的列表合并对象基于对象属性

class Address{ 
     public int HouseNo 
     public string Street 
    } 

    class Person 
    { 
     string Name; 
     public Address location 
    } 

    List<Person> list1 = new List<Person> 
          { 
          new Person("a", Address x), 
          new Person("b", Address y), 
          new Person("c", Address z), 
          new Person("a", Address a) 
          }; 

我想合并/列表1中基于同一Person.Name

这样的成绩相结合的物体包含

Person("a", [Address x,Address y]) 

回答

0

您可以使用字典<字符串列表<地址>>作为中间容器中创建您的合并,其中的关键是人的名字并且该值是关联地址的列表。

首先,在原始列表中为每个人制作一个循环,查看密钥(名称)是否已包含在词典中。如果是,则将新地址添加到词典值中,如果不添加人名作为键和包含地址的新列表。

您的原始列表只需要一个循环。

最后,您可以将您的字典重新转换为您喜欢的任何类型的容器。

我在说关于System.Collections.Generic.Dictionary < key,value>。

我必须学习如何在这里格式化示例代码... :-)