Quand j'ai vu suggestion Darins ici ..Extension LINQ SelectMany en 3.5 vs 4.0?
IEnumerable<Process> processes =
new[] { "process1", "process2" }
.SelectMany(Process.GetProcessesByName);
(process.getprocessesbyname())
.. J'étais un peu intriguée et je l'ai essayé dans VS2008 avec .NET 3.5 - et il n'a pas changé la compilation à moins que je à ..
IEnumerable<Process> res =
new string[] { "notepad", "firefox", "outlook" }
.SelectMany(s => Process.GetProcessesByName(s));
après avoir lu quelques réponses Darins avant que je doutais qu'il me était le problème était, et quand je suis arrivé plus tard, mes mains sur un VS2010 with.NET 4.0 - comme prévu - la suggestion d'origine a travaillé magnifiquement.
Ma question est: Qu'est-il arrivé de 3.5 à 4.0 qui rend cette (nouvelle syntaxe) possible? Est-ce que les extensionsmethods ont été étendues (hmm) ou de nouvelles règles pour la syntaxe lambda ou?
Lorsque vous avez essayé de le compiler sous .NET 3.5, quelle erreur compilateur avez-vous obtenu? – Jacob
@Jacob - bon point :) Les arguments de type pour la méthode 'System.Linq.Enumerable.SelectMany (System.Collections.Generic.IEnumerable , System.Func >) 'ne peut être déduit de l'utilisation. Essayez de spécifier explicitement les arguments de type. –
Moberg
Cool! J'étais toujours ennuyé quand cela arrivait. Bon à savoir il a été corrigé :) +1 – leppie