class Field{
public string Name{get;set;}
public string[] DependsOn{get;set;}
}
Скажем, у меня есть массив Field
пунктов:
List<Field> fields = new List<Field>();
fields.Add(new Field() { Name = "FirstName" });
fields.Add(new Field() { Name = "FullName",
DependsOn = new[] {"FirstName","LastName"}});
fields.Add(new Field() { Name = "Age",
DependsOn = new[] { "DateOfBirth" } });
fields.Add(new Field() { Name = "LastName" });
fields.Add(new Field() { Name = "DateOfBirth" });
Итак, ясно, мы получаем наши детали в следующем порядке:
- Первый номер
- FullName
- Возраст
- LastName
- DateOfBirth
Мой первый вопрос: Каков наилучший способ переставить элементы в моем списке/массив, так что зависимые столбцы (ПолноеИмя & Age) являются помещены после колонн они зависят от т-то вроде этого:
- FirstName
- La stName
- ПолноеИмя
- DateOfBirth
- Возраст
Так как поля Возраствсегда приходят после DateOfBirth, который зависит от того.
Мой второй вопрос: Есть ли способ обнаружения циклических зависимостей? то есть, когда
Field1
зависит отField2
и
Field2
зависит отField3
и
Field3
зависит отField1
Так что мы не увязнуть в круг. например когда вы закончите колледж, вам нужно 2 года опыта работы, чтобы получить работу. Но чтобы получить опыт работы, вам в первую очередь нужно иметь работу.
Это трудно, потому что вы пытаетесь разобраться на основе частичной упорядоченности, а не в общей сложности заказа. Стандартные алгоритмы сортировки, вероятно, не будут применяться. – dsimcha
ctually, топологические сортировочные работы – Tawani