Запрос LINQ создает исключение StackOverflow - PullRequest
0 голосов
/ 14 ноября 2011

Это LINQ-to-SQL.

Я пытаюсь подняться по иерархическим отношениям SiteCategories, чтобы увидеть, сколько существует уровней.

int numLevels = 1;

//I tried setting this to new[] { parentID }.AsQueryable(); 
//but linq didn't like it
IQueryable<int> nextBatchOfParents = _catalogdb.SiteCategories
                    .Where(c => c.SiteCategoryId == parentID)
                    .Select(c => c.SiteCategoryId);

while ((nextBatchOfParents = _catalogdb.SiteCategoryRelationships
         .Where(rel => nextBatchOfParents.Any(x => x == rel.ChildSiteCategoryId))
         .Select(rel => rel.ParentSiteCategoryId)).Any())
                ++numLevels;

К сожалению, первая итерация цикла вызывает исключение StackOverflow. Я предполагаю, что смогу уйти от этого, материализуя большинство / все эти запросы раньше, но я надеюсь, что есть лучший способ исправить это.

1 Ответ

3 голосов
/ 14 ноября 2011

Похоже, вы вызываете nextbatchofparents внутри себя.

...