使用 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()));