Связать объекты линиями по данным, считанным из файла
Я уже несколько часов пытаюсь написать нормальное условие, если вдруг кто-то поможет, буду очень рад и благодарен. Суть в том, что у меня считанные данные лежат в файле, в виде, IdParents{0,1,3}, я хочу пройти по всем таким спискам, найти с начала того, у кого эти родители и потом для этого объекта нарисовать линии ко всем этим айдишникам. Но прям вообще не могу понять как сформулировать условие и циклы. Если вдруг кто-то осмелится разобраться, вот гитлаб еще https://gitlab.com/IlyaKvashnin/TimeTrees/-/blob/lab3-GUI/TimeTrees.DesktopGUI/Tools/DrawTreeTool.cs, если вдруг запустить захотите
static void DrawConnections(ToolArgs args, List<List<int>> parents)
{
Grid sourceGrid = new();
Grid destinationGrid = new();
for (int j = 0; j < parents.Count() // Количество списков родителей, чтобы понимать сколько объектов нам нужно соединить с родителями; j++)
{
for (int i = 0; i < readadFile.Information.Count() // Общее количество людей, они же объекты на канве; i++)
{
if (readadFile.Information[i].GridId == MainWindow.Grids[i].Item1.PersonalIdentificator && (readadFile.Information[i].IdParents.Count() > 0)) //Если айди объекта на канве совпадает с айди человека, и у него есть родители
{
if (readadFile.Information[i].IdParents.SequenceEqual(MainWindow.Grids[i].Item1.IdParents)) //Если список родителей объекта совпадает со списком родителей человека, то говорим, что destinationGrid - родитель
{
destinationGrid = MainWindow.Grids[i].Item2;
for (int k = 0; k < parents[j].Count() //Количество родителей в списке; k++)
{
foreach (var item in MainWindow.Grids) //Проходим по списку всех объектов на канве
{
if (parents[j][k] == item.Item1.PersonalIdentificator) //Находим конкретного родителя и присваиваем ему объект с канвы, а дальше добавляем связи с помощью линии
{
sourceGrid = item.Item2;
}
Polyline polyline = new Polyline();
polyline.Stroke = Brushes.Blue;
args.Canvas.Children.Add(polyline);
polyline.UpdatePolylinesBetweenRectangles(destinationGrid, sourceGrid);
args.ShapesRepository.AddConnection(destinationGrid, sourceGrid, polyline, GridsRepository.ConnectionType.OneLevel, true);
polyline = null;
}
}
}
}
}
}