c# Некорректная сортировка List

Мне нужно получить название процесса и его ID. Я это делаю, но перед выводом в ListBox мне нужно его отсортировать по алфавиту. Я это сделал, но ID, полученные программой, не совпадают с ID из диспетчера задач.

private void Form1_Load(object sender, EventArgs e)
    {
        List<string> arrayProcess = new List<string>();
        foreach (Process winProc in Process.GetProcesses())
        {
            arrayProcess.Add(winProc.ProcessName);
        }
        arrayProcess.Sort();
        int i = 0;
        foreach (Process winProc in Process.GetProcesses())
        {
            listBox1.Items.Add(arrayProcess[i] + " " + winProc.Id);
            i++;
        }
    }

Ответы (1 шт):

Автор решения: aepot

Вы сначала добавляете имя процесса, потом перемешиваете список, потом в перемешанный список приклеиваете ID. Попробуйте так.

private void Form1_Load(object sender, EventArgs e)
{
    List<string> arrayProcess = new List<string>();
    foreach (Process winProc in Process.GetProcesses())
    {
        arrayProcess.Add(winProc.ProcessName + " " + winProc.Id);
    }
    arrayProcess.Sort();
    foreach (string item in arrayProcess)
    {
        listBox1.Items.Add(item);
    }
}

Или вот так, по совету от @tym32167

private void Form1_Load(object sender, EventArgs e)
{
    listBox1.Items.AddRange(Process.GetProcesses()
        .Select(x => $"{x.ProcessName} {x.Id}")
        .OrderBy(x => x));
}
→ Ссылка