Exemple #1
0
        public override IEnumerator Run(InstructionGraph graph, InstructionStore variables, int iteration)
        {
            if (Resolve(variables, List, out IVariableList variableList) && variableList is VariableList list)
            {
                if (SortByProperty)
                {
                    list.Values.Sort((left, right) =>
                    {
                        foreach (var condition in SortConditions)
                        {
                            var leftValue  = condition.GetValue(left.Store);
                            var rightValue = condition.GetValue(right.Store);

                            var compare = VariableHandler.Compare(leftValue, rightValue).GetValueOrDefault(0);
                            if (compare != 0)
                            {
                                return(compare);
                            }
                        }

                        return(0);
                    });
                }
                else
                {
                    list.Values.Sort((left, right) => VariableHandler.Compare(left, right).GetValueOrDefault(0));
                }
            }


            graph.GoTo(Next, nameof(Next));

            yield break;
        }