【发布时间】:2013-07-08 11:24:54
【问题描述】:
我尝试替换代码
foreach (var discovery in mpwrapper.parser.Discoveries)
{
solution.AddFile("Discoveries", discovery.DisplayStringName + ".mpx", discovery);
}
使用以下 linq 表达式
mpwrapper.parser.Discoveries.Select(
s => solution.AddFile("Discoveries", s.DisplayStringName + ".mpx", s));
但出现错误
方法的类型参数 'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)' 不能从用法中推断出来。尝试 明确指定类型参数。
如何将此 foreach 循环转换为我对 IEnumerable 集合中的每个对象执行方法的 linq 查询?
【问题讨论】:
-
我猜你的
solution.AddFile方法没有返回任何东西 - 这是正确的吗? -
Select执行有副作用的代码是使用不当。只需执行foreach。或者List<T>.ForEach(),这是一种预期会产生副作用的方法(= 方法外的状态变化)。 -
顺便说一句,将
foreach循环更改为Linq 只是为了它,这是我在.NET 中知道的使代码更难理解和调试的最常见技术之一。