Consider I download my data into this data structures:
public class AThingDTO
{
int AID { get; set; }
string AName { get; set;}
Dictionary<int, BThingDTO> BThingsColl { get; set;}
}
public class BThingDTO
{
int BID { get; set; }
string BName { get; set;}
int AID { get; set; }
List<CThingDTO> CThingsColl { get; set;}
}
public class CThingDTO
{
int CID { get; set; }
string CName { get; set;}
int BID { get; set; }
int AID { get; set; }
}
Consider I want to map it into this data structures:
public class AThing
{
int AID { get; set; }
string AName { get; set;}
List<BThing> BThingsColl { get; set; } = new List<BThing>();
}
public class BThing
{
int BID { get; set; }
string BName { get; set;}
List<CThing> CThingsColl { get; set;} = new List<CThing>();
}
public class CThing
{
int CID { get; set; }
string CName { get; set;}
}
I did like this:
public List<AThing> MapFromDTO(Dictionary<int, AThingDTO> dtoThingsHierarchy)
{
var mappedThings = new List<AThing>();
foreach (var aThingDto in dtoThingsHierarchy)
{
var aThing = new AThing();
aThing.AID = aThingDto.AID;
aThing.AName = aThingDto.AName;
foreach (var bThingDto in BThingsColl.Values)
{
var bThing = new BThing();
bThing.BID = bThingDto.BID;
bThing.BName = bThingDto.BName;
foreach (var cThingDto in CThingsColl)
{
var cThing = new CThing();
cThing.CID = cThingDto.CID;
cThing.CName = cThingDto.CName;
bThing.CThingsColl.Add(cThing);
}
aThing.BThingsColl.Add(bThing);
}
mappedThings.Add(aThing);
}
return mappedThings;
}
Is there a more elegant way / more expressive way to express this mapping? Maybe with LINQ?
AThing
contain aAThingDTO
, et cetera. – radarbob Apr 26 at 12:55