public void CmdPrepareData() { try { LocalData.MaxLevel = SourceList.Max(x => x.Level); LocalData.MinLevel = SourceList.Min(x => x.Level); LocalData.LevelsCount = LocalData.MaxLevel - LocalData.MinLevel + 1; int k = 0; foreach (TreeItem item in SourceList.OrderBy(x => x.SequenceNumber)) { k++; item.SequenceNumber = (double)k; item.Level = item.Level - LocalData.MinLevel + 1; item.IsLastItemInLevel = LocalTreeFunctions.CmdCheckIfItemIsLastInThisLevel(SourceList, item.ID); item.IsVisible = true; item.IsExpanded = true; item.HasChildren = SourceList.Any(x => x.ParentID == item.ID); } } catch (Exception ex) { LocalTreeFunctions.PrintError(ex.Message, MethodBase.GetCurrentMethod()); } }