2011-11-14 3 views
0

LINQ-to-SQL. J'essaie de remonter une relation hiérarchique de SiteCategories pour voir combien de niveaux il y a.La requête LINQ crée une exception StackOverflow

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; 

Malheureusement, la première itération de la boucle provoque une exception StackOverflow. Je suppose que je pourrais me frayer un chemin en matérialisant la plupart/toutes ces requêtes plus tôt, mais j'espère qu'il y a une meilleure façon de résoudre ce problème.

Répondre

3

Il semble que vous appeliez nextbatchofparents en son sein.

+1

Merci. Pour une raison quelconque, vous voyez que c'est ce dont j'avais besoin. Je me sens bête maintenant. –

+0

Pas de problème, ça arrive tout le temps. – McKay

Questions connexes