如何使用 CQLinq 在单个查询中获取方法和字段的指标
How to use CQLinq to get metrics of Methods and Fields within a single query
我在 NDepend 中使用 CQLinq 计算标识符的平均长度,我想获得 类、字段和方法的名称的长度。我浏览了 CQlinq 的这个页面:http://www.ndepend.com/docs/cqlinq-syntax,我有这样的代码:
let id_m = Methods.Select(m => new { m.SimpleName, m.SimpleName.Length })
let id_f = Fields.Select(f => new { f.Name, f.Name.Length })
select id_m.Union(id_f)
它不起作用,一个错误说:
'System.Collections.Generic.IEnumerable' does not
contain a definition for 'Union'...
另一个是:
cannot convert from
'System.Collections.Generic.IEnumerable' to
'System.Collections.Generic.HashSet'
但是,根据MSDN,IEnumerable 接口定义了 Union() 和 Concat() 方法。
在我看来,我不能像使用 Linq 一样使用 CQLinq。不管怎样,有没有办法在单个查询中从类型、方法和字段域中获取信息?
非常感谢。
is there a way to get the information from Types, Methods and Fields domains within a singe query?
暂时不行,因为一个CQLinq查询只能匹配一个类型序列,或者一个方法序列或者一个字段序列,所以你需要3个不同的代码查询。
对于下一个版本的 CQLinq,将会有很大改进,实际上你将能够编写如下内容:
from codeElement in Application.TypesAndMembers
select new { codeElement, codeElement.Name.Length }
下一个版本将在 2016 年底前推出。
我在 NDepend 中使用 CQLinq 计算标识符的平均长度,我想获得 类、字段和方法的名称的长度。我浏览了 CQlinq 的这个页面:http://www.ndepend.com/docs/cqlinq-syntax,我有这样的代码:
let id_m = Methods.Select(m => new { m.SimpleName, m.SimpleName.Length })
let id_f = Fields.Select(f => new { f.Name, f.Name.Length })
select id_m.Union(id_f)
它不起作用,一个错误说:
'System.Collections.Generic.IEnumerable' does not contain a definition for 'Union'...
另一个是:
cannot convert from 'System.Collections.Generic.IEnumerable' to 'System.Collections.Generic.HashSet'
但是,根据MSDN,IEnumerable 接口定义了 Union() 和 Concat() 方法。
在我看来,我不能像使用 Linq 一样使用 CQLinq。不管怎样,有没有办法在单个查询中从类型、方法和字段域中获取信息?
非常感谢。
is there a way to get the information from Types, Methods and Fields domains within a singe query?
暂时不行,因为一个CQLinq查询只能匹配一个类型序列,或者一个方法序列或者一个字段序列,所以你需要3个不同的代码查询。
对于下一个版本的 CQLinq,将会有很大改进,实际上你将能够编写如下内容:
from codeElement in Application.TypesAndMembers
select new { codeElement, codeElement.Name.Length }
下一个版本将在 2016 年底前推出。