LINQ查询创建StackOverflow异常

时间:2011-11-14 18:31:19

标签: c# linq linq-to-sql stack-overflow

这是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 个答案:

答案 0 :(得分:3)

看起来你正在调用本身的nextbatchofparents。