У меня есть иерархическая структура данных , которую я отображаю на веб-странице в виде дерева.
Я хочу, чтобы данные были упорядочены, чтобы сначала показать узлы, упорядоченные в алфавитном порядке, которые не имеют дочерних элементов, затем под этими узлами, упорядоченными в алфавитном порядке, которые имеют дочерние элементы. В настоящее время Я упорядочиваю все узлы в одной группе, что означает, что узлы с дочерними элементами появляются рядом с узлами без дочерних элементов.
Я использую рекурсивный метод для построения древовидного представления, в основе которого лежит этот код LINQ:
var filteredCategory = from c in category
orderby c.Name ascending
where c.ParentCategoryId == parentCategoryId && c.Active == true
select c;
Так что это оператор orderby, который я хочу улучшить.
Ниже показана структура таблицы базы данных:
[dbo].[Category](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NOT NULL,
[Level] [tinyint] NOT NULL,
[ParentCategoryId] [int] NOT NULL,
[Selectable] [bit] NOT NULL CONSTRAINT [DF_Category_Selectable] DEFAULT ((1)),
[Active] [bit] NOT NULL CONSTRAINT [DF_Category_Active] DEFAULT ((1))