Разве невозможно сохранить ваши данные так
Идентификатор заказа, Идентификатор шага рабочего процесса, Вес
Тогда первый предмет имеет вес 0, следующий вес 1, следующий вес 2. Тяжелые предметы опускаются до конца вашего списка.
Наконец, когда вы читаете данные из базы данных, вы просто упорядочиваете их по весу (по возрастанию), а затем добавляете каждый элемент в конец списка, когда читаете его из результата. Это означает, что вам вообще не нужен пользовательский метод поиска.
Такое представление упрощает жизнь, если вы хотите удалить шаг непосредственно из базы данных, поскольку прямо сейчас можно нарушить схему базы данных, удалив WorkFlowStepID 2. У элемента 3 нет родительского элемента, к которому можно присоединиться.