关于C#:如何按名称对进程排序?


How can I sort my processes by name?

本问题已经有最佳答案,请猛点这里访问。

这是我的代码,我想知道如何把它按字母顺序排列。谢谢!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Process[] proc;

void GetAllProcess()
{
    proc = Process.GetProcesses();
    listBox1.Items.Clear();
    foreach (Process p in proc)
    {
        listBox1.Items.Add(p.ProcessName);
    }
}


private void Form1_Load(object sender, EventArgs e)
{
    GetAllProcess();
}


Linq使处理集合的工作变得非常简单,它有一个OrderBy选项。一旦您订购了它们,您可以再次使用linq to Select每个进程的名称,然后使用这些名称,并使用Select将它们插入到列表中。

1
2
3
4
5
proc = Process.GetProcesses()
    .OrderBy(p => p.ProcessName)
    .ToArray();
proc.Select(p => p.ProcessName)
    .Select(listBox1.Items.Add);

请检查,我已经修改了您的函数:

1
2
3
4
5
6
7
8
9
void GetAllProcess()
{
    proc = Process.GetProcesses();
    listBox1.Items.Clear();
    foreach (Process p in proc.OrderBy(m=>m.ProcessName))
    {
        listBox1.Items.Add(p.ProcessName);
    }
}