2011-11-14 12 views
0

これはLINQ-to-SQLです。LINQクエリによってStackOverflow例外が作成されます

私は階層の関係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例外が発生します。私は、これらのクエリのほとんどまたはすべてをより早く実現することによって、私がこの道を覗き込むことができると推測していますが、これを修正するより良い方法があることを期待しています。

答えて

3

あなた自身の中でnextbatchofparentsを呼び出しているようです。

+1

ありがとうございます。何らかの理由であなたがそれを書くのを見て私が必要なものです。私は今、馬鹿だと感じる。 –

+0

問題はない、いつも起こる。 – McKay

関連する問題