2010-02-21 29 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