基于对象属性合并给定列表中的对象

时间:2016-05-04 20:21:33

标签: c#

我有一个像List

这样的对象列表
    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 )
                          };

我想基于相同的Person.Name

合并/组合list1中的对象

所以结果包含

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

1 个答案:

答案 0 :(得分:0)

您可以使用词典&lt; string,List&lt;地址&gt;&gt;作为创建合并的中间容器,其中键是人的名称,值是关联地址列表。

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

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

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

我在谈论System.Collections.Generic.Dictionary&lt;键,值&gt;。

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