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