2016-06-15 2 views
1

Я просто написал код, который будет сортировать текстовое поле, но я хочу знать, есть ли другие способы, которые не требуют промежуточного массива? (Только для повышения производительности)как отсортировать многострочное текстовое поле без использования массива

вот код я написал:

 string[] textbox = new string[textBox1.Lines.Length]; 
     textbox = textBox1.Text.Split('\r'); 
     textBox1.Clear(); 
     Array.Sort(textbox); 
     foreach(string text in textbox) 
     { 
      textBox1.AppendText(text + "\r\n"); 
     } 

ответ

1

Вы можете работать непосредственно со свойством Lines (и это уже массив).

textBox1.Lines = textBox1.Lines.OrderBy(l => l).ToArray(); 

(Обратите внимание, что в любом случае вы должны восстановить массив строк так, чтобы не представляется возможным, чтобы избежать массива, он просто материализуется после OrderBy в этом коде)

+0

да, я получил его , thx много :) – Alireza0772

+0

это было намного быстрее, чем то, что я написал. – Alireza0772

+0

appendtext занимает слишком много времени, чтобы выполнить действие – Alireza0772

0

Использование OrderBy:

var s= textBox1.Text.Split('\r').OrderBy(c=>c); 
textBox1.Clear(); 
foreach (string text in s) 
{ 
    textBox1.AppendText(text + "\r\n"); 
} 

Вы также можете сделать это без foreach петли только с помощью String.Join метод:

var s = string.Join("\r\n", textBox1.Text.Split('\r').OrderBy(c => c)); 
textBox1.Clear(); 
textBox1.AppendText(s);