Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Roslyn检测类是否使用Linq?_C#_Linq_Roslyn - Fatal编程技术网

C# 如何使用Roslyn检测类是否使用Linq?

C# 如何使用Roslyn检测类是否使用Linq?,c#,linq,roslyn,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; //... /。。。 int[]数字={5,4,1,3,9,8,6,7,2,0}; var lowNums= 从n开始 其中nnn

使用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; 
//...
/。。。
int[]数字={5,4,1,3,9,8,6,7,2,0};
var lowNums=
从n开始
其中n<5
选择n;
//...
还假设此代码不包括使用System.Linq的
文件

我希望能够检测到文件中存在linq语句,并(比如)使用System.linq自动添加
。我想检测Linq的查询或方法语法


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

给定语法树,您只需搜索或相关节点类型的节点


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

给定语法树,您只需搜索或相关节点类型的节点即可


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

我认为您可能需要查找适当的标记,并在解析文件后检查是否有(或最小值集)它们中的一个作为令牌存在,我正在使用类似的东西,但这似乎并没有检测到上面示例中给出的linq代码。我想你可能想寻找合适的标记,在解析完文件后,检查是否有任何(或最小的一组)标记作为标记存在。我正在使用类似的东西,但这似乎无法检测上面示例中给出的linq代码。如果你能给我一些有用的(或者我能做的)代码片段,我会很感激。但是这不能检测到
数字。其中(n=>n<5)
版本,对吗?@JakubLinhart:正确。如果要检测到这一点,需要定义实际需要的内容(任何名为
Where
的方法、特定的LINQ提供程序、任何带有lambda的扩展方法?)。而且,您可能需要一个语义模型。但这无法检测
数字。其中(n=>n<5)
version,对吗?@JakubLinhart:Correct。如果要检测到这一点,需要定义实际需要的内容(任何名为
Where
的方法、特定的LINQ提供程序、任何带有lambda的扩展方法?)。而且,您可能需要一个语义模型。