我刚刚写了一个代码来对文本框进行排序,但我想知道有没有其他方法不需要中间数组?!(只是为了提高性能)
这里是我写的代码:
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");
}
答案 0 :(得分:1)
您可以直接使用Lines属性(这已经是一个数组)。
textBox1.Lines = textBox1.Lines.OrderBy(l => l).ToArray();
(注意,无论如何你必须重建Lines数组,因此实际上不可能避免使用数组,它只是在此代码中的OrderBy之后实现)
答案 1 :(得分: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);