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));
}