使用c#比较两个ArrayList内容

Anu*_*uya 4 c# comparison arraylist

我有两个arraylist.即ExistingProcess和CurrentProcess.

ExistingProcess arraylist包含此应用程序启动时运行的进程列表.

CurrentProcess arraylist位于一个线程中,用于始终获取系统中运行的进程.

每当currentProcess arraylist运行当前进程时,我想与ExistingProcess arraylist进行比较并显示在消息框中,如:

缺少进程:NotePad [如果记事本已关闭且应用程序已启动]新进程:MsPaint [如果MSPaint在应用程序启动后启动]

基本上这是两个arraylist的比较,以找出我的c#应用程序启动后启动的新进程和进程关闭.

希望我的问题很明确.需要帮助.

Len*_*rri 6

您可以使用LINQ Except.

除了产生两个序列的集合差异.

样品:

http://msdn.microsoft.com/en-us/library/bb300779.aspx

http://msdn.microsoft.com/en-us/library/bb397894%28VS.90%29.aspx

用来说明这个想法的代码......

static void Main(string[] args)
{
    ArrayList existingProcesses = new ArrayList();

    existingProcesses.Add("SuperUser.exe");
    existingProcesses.Add("ServerFault.exe");
    existingProcesses.Add("StackApps.exe");
    existingProcesses.Add("StackOverflow.exe");

    ArrayList currentProcesses = new ArrayList();

    currentProcesses.Add("Games.exe");
    currentProcesses.Add("ServerFault.exe");
    currentProcesses.Add("StackApps.exe");
    currentProcesses.Add("StackOverflow.exe");

    // Here only SuperUser.exe is the difference... it was closed.   
    var closedProcesses = existingProcesses.ToArray().
                          Except(currentProcesses.ToArray());

    // Here only Games.exe is the difference... it's a new process.   
    var newProcesses = currentProcesses.ToArray().
                       Except(existingProcesses.ToArray());
}
Run Code Online (Sandbox Code Playgroud)