Linq to objects - sélectionnez le premier objet

Je sais presque rien sur linq.

Je suis en train de faire ceci:

var apps = from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select app;

Ce qui me fait tous les processus en cours d'exécution qui correspondent à ce critère.

Mais je ne sais pas comment pour obtenir le premier. Les exemples que je peux trouver sur le net semblent impliquer que j'ai à faire ce

var matchedApp = (from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select app).First();

ce qui me semble un peu moche, et également lève une exception si il n'y a aucun processus d'appariement. Est-il un meilleur moyen?

Mise à JOUR

Je suis en train d'essayer de trouver le premier élément correspondant, et d'appeler SetForegroundWindow sur elle

Je suis venu avec cette solution, qui frappe aussi moi aussi laid et affreux, mais c'est mieux que ci-dessus. Des idées?

var unused = from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select SetForegroundWindow( app.MainWindowHandle ); //side-effects in linq-query is technically bad I guess

source d'informationauteur Orion Edwards | 2008-08-11