Это 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. Я предполагаю, что смогу уйти от этого, материализуя большинство / все эти запросы раньше, но я надеюсь, что есть лучший способ исправить это.