C# 为什么使用LINQ时类耦合会跳转?

C# 为什么使用LINQ时类耦合会跳转?,c#,linq,code-metrics,C#,Linq,Code Metrics,我有一个采用三个参数的方法:List source,List另外六个类可能是: IEnumerable-查询结果 IEnumerable-左侧集合 IEnumerable-正确的集合 Func-联接表达式的左侧部分 Func-联接表达式的右侧部分 Func-投影 也可能是由于查询被转换为静态扩展方法调用,所以它正在计算可枚举类 在这两种情况下,代码分析似乎都没有忽略Linq使用的瞬态类(是否应该是有争议的)。我的建议是要么忽略它(可能手动计算耦合并注意差异),要么找到更好的分析工具 另一个问

我有一个采用三个参数的方法:
List source
List另外六个类可能是:

  • IEnumerable
    -查询结果
  • IEnumerable
    -左侧集合
  • IEnumerable
    -正确的集合
  • Func
    -联接表达式的左侧部分
  • Func
    -联接表达式的右侧部分
  • Func
    -投影
也可能是由于查询被转换为静态扩展方法调用,所以它正在计算
可枚举

在这两种情况下,代码分析似乎都没有忽略Linq使用的瞬态类(是否应该是有争议的)。我的建议是要么忽略它(可能手动计算耦合并注意差异),要么找到更好的分析工具


另一个问题是:它是否增加了整体耦合?我怀疑这些类中有几个在你的应用程序中使用,因此它可能不会对你的整体耦合产生显著影响。

如果你的工具被关键字实现绊倒,那么它不够先进。在这个层次上的复杂性分析可以通过肉眼在代码审查时完成。
var warnings = from s in source
    join r in results on s.Field1 equals r.Field1 into joined
    from j in joined.DefaultIfEmpty( )
    where j == null
    select string.Format( "{0}{1}", A_CONSTANT, s.Field2 );