I'm work with IEnumerable
of myObjects
. Those myObjects
are set by the App.config
and other XML files.
I load the config in an object-model for each file and then I add the content in myObjects
. So I want to merge the object-models in only one.
myObjects
contains IEnumerable
of myObjectChild
and myObjectChild
contains IEnumerable
of myObjectChildChild
.
I'm a little bit lost in all these IEnumerable
and didn't know how to merge this.
Here are the classes:
public class MyObject
{
public string Name { get; set; }
public IEnumerable<MyObjectChild> MyObjectChilds { get; set; }
}
public class MyObjectChild
{
public string Name { get; set; }
public IEnumerable<MyObjectChildChild> MyObjectChildChilds { get; set; }
}
public class MyObjectChildChild
{
public string Name { get; set; }
public string Value { get; set; }
}
///////////////////////////////////////////////////////////////////////////////
EDIT ////
class Program
{
static void Main(IEnumerable<MyObject> myObjects)
{
List<MyObject> objectConfigList = new List<MyObject>();
foreach (var myO in myObjects)
{
if (objectConfigList.Any(a => a.Name == myO.Name))
{
Console.WriteLine("myO already in the list: " + myO.Name);
Console.WriteLine("Check current myO.myOC");
List<MyObjectChild> myOChild = myO.MyObjectChilds.ToList();
foreach (var myOC in myOChild)
{
if (objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Any(s => s.Name == myOC.Name))
{
Console.WriteLine("myOC already in the myO: " + myOC.Name);
List<MyObjectChildChild> tempmyOCC = myOC.MyObjectChildChilds.ToList();
Console.WriteLine("Check current myOC.myOCC");
foreach (var myOCC in tempmyOCC)
{
if (objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Where(myOCt => myOCt.Name == myOC.Name).First().MyObjectChildChilds.Any(p => p.Name == myOCC.Name))
{
Console.WriteLine("myOCC already defined in this myOCction: " + myOCC.Name);
}
else
{
objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Where(myOCc => myOCc.Name == myOC.Name).First().MyObjectChildChilds.ToList().Add(myOCC);
}
}
}
else
{
objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.ToList().Add(myOC);
}
}
}
else
{
objectConfigList.Add(myO);
}
}
}
}
I've found a solution beacause I didn't succeed with the proposed.
I post my solution here, if you have any amelioration to propose, I'll be glad to read it !
Thanks for your help.