Débogage des Requêtes LINQ

Nous avons fait beaucoup de travail avec LINQ ces derniers temps, surtout dans une LINQ-to-Objets de sens. Malheureusement, certains de nos requêtes peut être un peu compliqué, surtout quand ils commencent à se comporter plusieurs séquences dans les combinaisons. Il peut être difficile de dire exactement ce qu'il se passe, quand vous obtenez les requêtes qui commencent à ressembler à:

IEnumerable<LongType> myCompanies =       relevantBusiness.Children_Companies
            .Select(ca => ca.PR_ContractItemId)
            .Distinct()
            .Select(id => new ContractedItem(id))
            .Select(ci => ci.PR_ContractPcrId)
            .Distinct()
            .Select(id => new ContractedProdCompReg(id))
            .Select(cpcr => cpcr.PR_CompanyId)
            .Distinct();

var currentNewItems = myCompanies 
                .Where(currentCompanyId => !currentLic.Children_Appointments.Select(app => app.PR_CompanyId).Any(item => item == currentCompanyId))
                .Select(currentId => new AppointmentStub(currentLic, currentId))
                .Where(currentStub=>!existingItems.Any(existing=>existing.IsMatch(currentStub)));


Items = existingItems.Union(newItems).ToList();

etc., etc...

Même lorsque vous déboguez, il peut être difficile de dire qui fait quoi à qui et quand. Court de gratuitement en appelant "ToList" sur les séquences pour obtenir les choses que je peux examiner plus facilement, quelqu'un at-il de bonnes suggestions pour comment déboguer "compliqué" de LINQ?

OriginalL'auteur GWLlosa | 2009-06-04