Связать объекты линиями по данным, считанным из файла

Я уже несколько часов пытаюсь написать нормальное условие, если вдруг кто-то поможет, буду очень рад и благодарен. Суть в том, что у меня считанные данные лежат в файле, в виде, 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;
                                }
                                
                            }

                        }
                            
                           

                    }
                }



                

            }

Ответы (0 шт):