Я использую модель вложенного набора и хочу иметь возможность выбрать 10 родительских элементов, а также 10 дочерних элементов для каждого родительского элемента, которые упорядочены.
Я пытаюсь написать систему вложенных комментариев, в которой ответ на комментарий будет означать наличие левого и правого значений в своем «родительском» комментарии.
У меня настоящая головная боль, уменьшающая время загрузки больших списков извлекаемых элементов, и я верю, что если бы я мог сделать вышеупомянутое в одном операторе Linq, я мог бы сэкономить гораздо больше времени, чем повторные вызовы дБ, чтобы получить 10 детей для каждого родителя.
Я использую оператор this для получения родителя (или корневых элементов) из текста данных.
var query = context.Items
.Where(x => !context.Items.Any(y => y.LeftPos < x.LeftPos
&& y.RightPos > x.RightPos))
.OrderBy(x => x.Id)
.Take(pageSize)
.ToList();
Приведенный выше код получает самые внешние (родительские) элементы в модели вложенного набора, проверяя, что нет других элементов с левыми и правыми значениями вне их.
Итак, вместо того, чтобы циклически перебирать parentItems с помощью foreach (что я сейчас делаю) и делать 10 или (pageSize) обращений к БД на каждой итерации, как я могу взять 10 дочерних элементов каждого родительского узла с помощью оператора Linq
EDIT:
Я использую модель вложенного множества. Мои предметы имеют левую и правую позиции (leftPos и RightPos). Таким образом, дочерний объект - это объект с левыми и правыми значениями в левом и правом значениях другого объекта, который, в свою очередь, будет родительским.
1 a 4
2 b 3
так что, если у меня много предметов
1 a 4
2 b 3
5 c 10
6 d 7
8 e 9
11 f 14
12 g 13
....
Есть ли способ выбрать x количество детей от каждого родителя с помощью Linq?
Любая помощь приветствуется