2010-02-21 27 views
0

我有字符串對象代表進程名稱的列表。我想通過使用我擁有的字符串對象列表來過濾正在運行的進程的集合(通過使用GetProcesses()獲取)。因此,如果我想查找在進程集合中運行的Sql Server進程,我將查找存儲在字符串列表中的字符串名稱。過濾基於字符串列表中的進程列表對象

如何才能篩選的進程列表以獲得僅具有相同工藝的名稱作爲字符串列表的過程(不同泛型類型使得它很難 - 對我來說,反正)?

我使用.NET 4.0和LINQ。

感謝

回答

1

這應該做到這一點..

var targetNames = new [] { "processone", "Processtwo" }; 

var processes = from p in Process.GetProcesses() 
       where targetNames.Any(n => n == p.ProcessName) 
       select p; 
+1

關閉。 ProcessName不包含「.exe」,所以'targetNames'不應該。如果OP是沒有使用正確的情況下的比較應該是不區分大小寫的:'N => n.Equals(p.ProcessName,StringComparison.InvariantCultureIgnoreCase)'。 – 2010-02-21 00:45:52

+1

完美的作品,謝謝! – dotnetdev 2010-02-21 00:56:38

+0

.Intersect()會比。任何一個更好的選擇()在這裏。 – 2010-02-21 01:46:16