protected IEnumerable<TreeViewResult> GetDistinctDictionaryTablesTree(List<IUserField> userFields, Aspect.Domain.CommonDomain provider)
        {
            List<Guid> list = userFields.Select(s => s.DictionaryTreeID).Distinct().ToList();
            List<Aspect.Domain.GetDictionaryTreeParentsResult> tableList = new List<Aspect.Domain.GetDictionaryTreeParentsResult>();
            foreach (Guid item in list)
            {
                List<Aspect.Domain.GetDictionaryTreeParentsResult> lll = provider.GetDictionaryTreeParents(item).ToList();
                int max =lll.Max(l => l.Level).Value;
                lll.ForEach(delegate(GetDictionaryTreeParentsResult n)
                {
                    n.Level = (n.Level - max) * -1;
                });
                tableList.AddRange(lll);
            }

            //return tableList.Distinct(DictionaryTreeResultEqualityComparer.Instance).OrderByDescending(d => d.Level).ToList().ConvertAll(
            return tableList.Distinct(DictionaryTreeResultEqualityComparer.Instance).OrderBy(d => d.Level).ToList().ConvertAll(
                delegate(GetDictionaryTreeParentsResult n)
                {
                    return new TreeViewResult()
                    {
                        ID = n.ID,
                        Level = (int)n.Level
                    };
                }
                ).ToList();
        }