使用 LINQ 遍歷語法樹

你可以使用 LINQ 輕鬆導航語法樹。例如,很容易獲得所有 ClassDeclarationSyntax 節點(宣告的類),其名稱以字母 A 開頭:

var allClassesWithNameStartingWithA = syntaxRoot.DescendantNodes()
    .OfType<ClassDeclarationSyntax>()
    .Where(x => x.Identifier.ToString().StartsWith("A"));

或者獲取所有具有屬性的類:

var allClassesWithAttriutes = syntaxRoot.DescendantNodes()
    .OfType<ClassDeclarationSyntax>()
    .Where(x => x.AttributeLists.Any(y => y.Attributes.Any()));