LINQ查询创建一个StackOverflow异常

本文关键字:一个 StackOverflow 异常 查询 创建 LINQ | 更新日期: 2023-09-27 18:14:27

这是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异常。我猜我可以偷偷摸摸地通过实现大多数/所有这些查询更快,但我希望有一个更好的方法来解决这个问题。

LINQ查询创建一个StackOverflow异常

看起来像是在调用nextbatchofparents。