예제 #1
0
        public void FillLink(TypeOfActionXml typeOfActionXml)
        {
            if (LinkTags != null)
            {
                var dicToCompail = LinkTags.ToDictionary(l => l.Tag, l => l);

                // заполняем дерево ссылками на следующие и предыдущие элементы
                foreach (var l in LinkTags)
                {
                    LiteratureTag nextTag = null;
                    dicToCompail.TryGetValue(l.Ref, out nextTag);
                    if (nextTag != null && l.PreviousNode == null && (l.NextNodeEmpty() && typeOfActionXml == TypeOfActionXml.Separete ||
                                                                      typeOfActionXml == TypeOfActionXml.UnionTree))
                    {
                        nextTag.AddNextNode(l);
                        l.PreviousNode = nextTag;
                    }
                }

                //разрываем циклическую ссылку
                if (typeOfActionXml == TypeOfActionXml.UnionTree)
                {
                    if (LinkTags != null && LinkTags.Count > 0)
                    {
                        SeparateLink(LinkTags.First());
                    }
                }
            }
        }
예제 #2
0
        // находим начало дерева
        public List <LiteratureTag> GetLinkedLists(TypeOfActionXml typeOfActionXml)
        {
            FillLink(typeOfActionXml);
            var linkedList = LinkTags?.Where(l => l.PreviousNode == null).ToList();

            return(linkedList);
        }