मुझे linq के बारे में लगभग कुछ नहीं पता है।वस्तुओं के लिए लिंक - पहली वस्तु का चयन करें
मैं यह कर रहा हूँ:
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();
जो मुझे कुछ हद तक बदसूरत के रूप में हमलों क्या करना है यह सूचित करते हैं लगता है, और यह भी एक अपवाद फेंकता है तो वहाँ कोई मिलता-जुलता प्रक्रियाओं कर रहे हैं। क्या कोई बेहतर तरीका है?
अद्यतन
मैं वास्तव में उस पर 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
गिनती के साथ अनावश्यक है, आप इसे एक क्वेरी के रूप में कैसे रखते हैं, न कि एक्सटेंशन विधि? –
@Quintin FirstOrDefault के लिए कोई "कीवर्ड" वाक्यविन्यास नहीं है - आपको एक्सटेंशन विधि का उपयोग करना होगा। –
ठीक है, आप '(क्वेरी) का उपयोग कर सकते हैं। फर्स्टऑर्डडिफॉल्ट()' लेकिन विस्तार विधि प्रेषण इमो –