Cuando vi Darins sugerencia aquí ..Extensión LINQ SelectMany en 3.5 vs 4.0?
IEnumerable<Process> processes =
new[] { "process1", "process2" }
.SelectMany(Process.GetProcessesByName);
(process.getprocessesbyname())
.. Yo estaba un poco intrigado y Lo he probado en VS2008 con .NET 3.5 - y no me he cambiado a menos que la compilación a ..
IEnumerable<Process> res =
new string[] { "notepad", "firefox", "outlook" }
.SelectMany(s => Process.GetProcessesByName(s));
después de haber leído algunas respuestas Darins antes de que yo sospechaba que era yo que era el problema, y cuando más tarde llegó a mis manos en un VS2010 with.NET 4.0 - como se esperaba - la sugerencia original trabajó hermosamente.
Mi pregunta es: ¿Qué ha pasado de 3.5 a 4.0 que hace posible esta (nueva sintaxis)? ¿Son los métodos de extensión los que se han extendido (hmm) o las nuevas reglas para la sintaxis lambda o?
Cuando se trató de compilar bajo .NET 3.5, lo error del compilador obtuvo? – Jacob
@Jacob - buen punto :) Los argumentos de tipo para el método 'System.Linq.Enumerable.SelectMany (System.Collections.Generic.IEnumerable , System.Func >) 'no se puede deducir del uso. Intente especificar los argumentos de tipo explícitamente. –
Moberg
¡Genial! Siempre me molestaba cuando sucedía esto. Es bueno saber que se ha solucionado :) +1 – leppie