C# 如何在不使用数组的情况下对多行文本框进行排序

C# 如何在不使用数组的情况下对多行文本框进行排序,c#,sorting,textbox,C#,Sorting,Textbox,我刚刚写了一个代码,可以对文本框进行排序,但我想知道还有其他方法不需要中间数组吗?!(只是为了提高绩效) 以下是我编写的代码: string[] textbox = new string[textBox1.Lines.Length]; textbox = textBox1.Text.Split('\r'); textBox1.Clear(); Array.Sort(textbox); foreach(string t

我刚刚写了一个代码,可以对文本框进行排序,但我想知道还有其他方法不需要中间数组吗?!(只是为了提高绩效)

以下是我编写的代码:

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

使用订购人
OrderBy

var s= textBox1.Text.Split('\r').OrderBy(c=>c);
textBox1.Clear();
foreach (string text in s)
{
    textBox1.AppendText(text + "\r\n");
}
您也可以不使用
foreach
循环,只使用以下方法:


您可以直接使用Lines属性(这已经是一个数组)


(请注意,在任何情况下,您都必须重建Lines数组,这样就不可能真正避免数组,它只是在该代码中的OrderBy之后具体化)

这比我编写的要快得多。appendtext执行操作需要太多时间
var s = string.Join("\r\n", textBox1.Text.Split('\r').OrderBy(c => c));
textBox1.Clear();
textBox1.AppendText(s);
 textBox1.Lines = textBox1.Lines.OrderBy(l => l).ToArray();