我對linq幾乎一無所知。Linq to objects - 選擇第一個對象
我這樣做:
var apps = from app in Process.GetProcesses()
where app.ProcessName.Contains("MyAppName") && app.MainWindowHandle != IntPtr.Zero
select app;
這讓我匹配標準將所有正在運行的進程。
但我不知道如何得到第一個。我可以在網絡上找到的例子似乎意味着我必須這樣做
var matchedApp = (from app in Process.GetProcesses()
where app.ProcessName.Contains("MyAppName") && app.MainWindowHandle != IntPtr.Zero
select app).First();
這令我有點醜陋,也拋出一個異常,如果沒有匹配的過程。有沒有更好的辦法?
UPDATE
實際上,我試圖找到第一個匹配項,並呼籲它SetForegroundWindow
我想出了這個解決方案,這也令我醜陋和可怕
,但比上面好。有任何想法嗎?
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
如何將它作爲查詢而不是擴展方法? – 2010-03-25 10:48:54