转换为方法组Resharper

我在下面写了一个像这样的方法:

internal static IList GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes( IList validEmpowerCompanyTaxDatas, IList empowerTaxViews) { IList result = new List(); foreach (EmpowerCompanyTaxData empowerCompanyTaxData in validEmpowerCompanyTaxDatas) { IList validEmpowerTaxViews = GetEmpowerTaxViewsByLongAgencyAndTaxType( empowerCompanyTaxData, empowerTaxViews); validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv) { result.Add(etv); }); } return result; } 

对于这种方法,resharper说:

 validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv) { result.Add(etv); }); 

转换为方法组。 这意味着什么,应该做些什么来摆脱这个。

JaredPar已经提供了正确的答案,我只是想建议一个更简单的方法实现:

 internal static IList GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes( IList validEmpowerCompanyTaxDatas, IList empowerTaxViews) { var results = from empowerCompanyTaxData in validEmpowerCompanyTaxDatas from etv in GetEmpowerTaxViewsByLongAgencyAndTaxType( empowerCompanyTaxData, empowerTaxViews) select etv; return results.ToList(); } 

Resharper的含义是您可以通过使用方法组Add来更简单地表达ForEach代码。 例:

 validEmpowerTaxViews.ToList().Foreach(result.Add); 

Add定义的方法组与ForEach期望的委托兼容,因此C#编译器将负责转换。 Resharper中的默认设置是优先于lambdas和显式委托创建语句的方法组。

接受Resharper的建议,看看它做出了哪些改变。 您可以随时撤消它们。

如果您对此更改不满意并且不希望Resharper将来建议它,那么您可以禁用该特定选项 – 其他选项仍然可用。 详情请参阅此处的答案。

Resharper:vars