Reputation: 918
I have array of pets object. I want to assign same number to Duplicate
property if any pet are in RelatedTo
property. I can tell which pet are related to based on same Duplicate
number.
Pet object can be modify.
class Pet
{
public int id { get; set;}
public string Name { get; set; }
public int Age { get; set; }
public bool Vaccinated { get; set; }
public string RelatedTo {get; set; }
public int DuplicateTo {get; set;}
}
Pet[] pets ={
new Pet { id = 1 ,Name="Barly", Age=8, Vaccinated=true , RelatedTo = "7,5"},
new Pet { id = 3, Name="Robi", Age=3, Vaccinated=false, RelatedTo= "2" } ,
new Pet { id = 2, Name="Toni", Age=1, Vaccinated=false, RelatedTo= "3" },
new Pet { id = 7, Name="why", Age=4, Vaccinated=false, RelatedTo= "5,1" },
new Pet { id = 5, Name="what", Age=1, Vaccinated=false, RelatedTo= "7,1" }
};
With DuplicateTo
Pet[] pets ={
new Pet { id = 1 ,Name="Barly", Age=8, Vaccinated=true , RelatedTo = "7,5" , DuplicateTo = 1},
new Pet { id = 3, Name="Robi", Age=3, Vaccinated=false, RelatedTo= "2" , DuplicateTo = 2} ,
new Pet { id = 2, Name="Toni", Age=1, Vaccinated=false, RelatedTo= "3" , DuplicateTo = 2},
new Pet { id = 7, Name="why", Age=4, Vaccinated=false, RelatedTo= "5,1" , DuplicateTo = 1},
new Pet { id = 5, Name="what", Age=1, Vaccinated=false, RelatedTo= "7,1" , DuplicateTo = 1}
};
Upvotes: 0
Views: 51
Reputation: 1421
If you want to set the same number to a pet and related ones, this C# code will work.
private Pet[] SetDuplicateTo(Pet[] pets)
{
int currentDupNumber = 1;
foreach (var pet1 in pets)
{
if (pet1.DuplicateTo > 0) { continue; }
var relatedPets = (from p in pets where pet1.RelatedTo.Split(',').Select(r => r.Trim()).Contains(p.id.ToString()) select p).ToList();
if (relatedPets.Count > 0)
{
pet1.DuplicateTo = currentDupNumber;
foreach (var pet2 in relatedPets)
{
pet2.DuplicateTo = currentDupNumber;
}
}
currentDupNumber++;
}
return pets;
}
Upvotes: 1