c# - 如何使用 Roslyn 检测一个类是否使用 Linq?

标签 c# linq roslyn

使用 Roslyn,我想检测一个类是否使用 Linq

假设一些代码如下:

//...
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };       
var lowNums = 
    from n in numbers 
    where n < 5 
    select n; 
//...

还假设此代码不包含的文件 using System.Linq;

我希望能够检测到文件中有一个 linq 语句并(比如说)自动添加 using System.Linq。我想检测 Linq 的查询或方法语法。

有没有一种方法可以使用 Roslyn 检测到这一点?我只想知道代码是否使用了 Linq,不想做任何进一步的处理。

最佳答案

给定一个语法树,你可以简单地搜索 SyntaxKind.QueryExpression 的节点或相关节点类型。

有关详细信息,请在 VS2015 中打开该文件并查看语法可视化工具以查看语法树的确切外观。

关于c# - 如何使用 Roslyn 检测一个类是否使用 Linq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640846/

相关文章:

c# - 通过 LINQ 获取字符串列表

c# - 覆盖 Azure 上 RedisSessionStateProvider 的连接

c# - ASP.NET MVC - 我应该使用存储库模式将 ViewModel 写入数据库还是先将它们转换为模型?

c# - 删除目录中文件的最快方法是什么? (特定文件扩展名除外)

c# - 查找 Roslyn 默认可为 null 的上下文

c# - 如何使用 Roslyn/代码分析读取 XML 文档注释

c# - 将字符串解析为具有自定义属性的枚举

c# - 使用 linq 将数据添加到现有的 xml 文件

C# 将两个属性合并到一个列表中并过滤唯一值

c# - C# 或 VB 文档注释中的粗体或斜体?