How can I create a new List

My first post. Humbled by this community. Thank you.

The goal: Create a new List<PropertyB> based on two other lists: List<PropertyA> and another List<PropertyB>.

For each PropertyA in the List<PropertyA>, create a new PropertyB(), assigning the DisplayName to the new PropertyB's Name property. For each property in 'List', if the name from PropertyA matches PropertyB, assign the value to the new list's value property.

The problem: Accounting for Duplicate values. No data loss can occur between the lists.

The new list should include: Every PropertyA and every Value of the PropertyB list where there is a Name match. The types:

My thoughts: My gut says the inner loop should check whether something has already been added to the collection. Or perhaps an accounting of duplicate values (ie: the index of duplicates?)

Any assistance is appreciated!

 public class PropertyA{
      private string DisplayName{get; set;}
      private string Name {get; set;}
      private string Value {get; set;}
}
 public class PropertyB{
      private string Name{get; set;}
      private string Value{get; set;}
}

Initialization:

List<PropertyA> listA = new List<PropertyA>()
{
      new PropertyA(){ DisplayName="LOB", Name="lineofbusiness", Value="test"},
      new PropertyA(){ DisplayName="ABC", Name="alpha", Value="test2"},
      new PropertyA(){ DisplayName="DEF", Name="beta", Value="test3"},
      new PropertyA(){ DisplayName="GHI", Name="zeta", Value="test4"},
      new PropertyA(){ DisplayName"Line of Business", Name="lineofbusiness", Value="test5"
};
List<PropertyB> listB = new List<PropertyB>()
{
      new PropertyB(){ Name="lineofbusiness", Value="test789"},
      new PropertyB(){ Name="alpha", Value="test234"},
      new PropertyB(){ Name="lineofbusiness", Value="test456"},
      new PropertyB(){ Name="beta", Value="test123"},
};

In Main:

List<PropertyB> newList = new List<PropertyB>();

foreach(PropertyA propA in listA){
      PropertyB newProp = new PropertyB();
      newProp.Name = propA.DisplayName;
     
     foreach(PropertyB propB in listB){
     
          if(propA.Name == propB.Name){
               newProp.Value = propB.Value;
               break; 
          }
     }
     newList.Add(newProp);
}

UPDATE: The console output (if you choose) should be as follows:

LOB test789
ABC test234 
DEF test123 
GHI null 
Line of Business test456 

if you simply remove the break; you end up with:

LOB test456
ABC test234 
DEF test123 
GHI null 
Line of Business test456 

The inner loop will always assign the LAST name match value. That's a problem



from Recent Questions - Stack Overflow https://ift.tt/3m0fCn3
https://ift.tt/eA8V8J

Comments

Popular posts from this blog

Today Walkin 14th-Sept

Spring Elasticsearch Operations

Hibernate Search - Elasticsearch with JSON manipulation