在项目列表中同步属性

Bry*_*ver 4 .net c# linq loops

我在使用一小段代码时遇到了麻烦.

我有一个MapItem类的列表,其中包含一些属性,Address和Html,我需要使用相同的Address属性连接每个项目的Html属性.例如:

firstMapItem = new MapItem { Address = "1122 Elm Street", 
                             Html="<p>some html</p>" };  
secondMapItem = new MapItem { Address = "1122 Elm Street", 
                              Html="<p>different html</p>" };
Run Code Online (Sandbox Code Playgroud)

会成为:

firstMapItem.Address == "1122 Elm Street";
firstMapItem.Html == "<p>some html</p><p>different html</p>";

secondMapItem.Address == "1122 Elm Street"; 
secondMapItem.Html == "<p>some html</p><p>different html</p>";
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

            foreach (MapItem item in mapItems)
            {
                var sameAddress = from m in mapItems
                                  where m.Address == item.Address
                                  select m;

                if (sameAddress.Count() > 1)
                {
                    //tried inserting -> item.Html = ""; right here as well
                    foreach (MapItem single in sameAddress)
                    {
                        item.Html += single.Html;
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

我可能会让它变得比它需要的更复杂.

提前致谢.

Wil*_*den 5

您可以分组Address,然后连接Html值:

var results = from m in mapItems
              group m by m.Address into ms
              select new MapItem
              {
                  Address = ms.Key,
                  Html = string.Concat(ms.Select(m => m.Html))
              };
Run Code Online (Sandbox Code Playgroud)