private void BuildLinkedList() { var count = 0; var lookup = _pageIndex.ToLookup(i => i.ParentId, i => count++); foreach (var page in _pageIndex) { var pageId = page.PageId; var childId = 0; foreach (var index in lookup[pageId]) { if (childId == 0) { page.FirstChild = index; } else { _pageIndex[childId].NextPage = index; } childId = index; } } }