C# 如何对二维字符串数组进行排序并将其指定给标签 新列表=新列表(); for(int i=0;iitem[1])。选择(item=>string.Join(“,item))事实上,使用StringBuilder来完成整个过程可能会稍微高效一些,因此您确实是对的。:) list.OrderBy(arr => arr[1]).ToList() var sorted = from l in list.OrderBy(item => item[1]) select l[0]+" "+l[1]+"\r\n"; Label1.Text = string.Concat(sorted); StringBuilder sb = new StringBuilder(); foreach(var content in contentList.OrderBy(p=>p.Title)) { sb.Append(content.Quicklink); sb.Append(" "); sb.Append(content.Title); sb.Append(Environment.NewLine); } Label1.Text = sb.ToString();
如何根据str2值对列表进行排序,然后将密钥对值分配给标签。对于您拥有的linq:C# 如何对二维字符串数组进行排序并将其指定给标签 新列表=新列表(); for(int i=0;iitem[1])。选择(item=>string.Join(“,item))事实上,使用StringBuilder来完成整个过程可能会稍微高效一些,因此您确实是对的。:) list.OrderBy(arr => arr[1]).ToList() var sorted = from l in list.OrderBy(item => item[1]) select l[0]+" "+l[1]+"\r\n"; Label1.Text = string.Concat(sorted); StringBuilder sb = new StringBuilder(); foreach(var content in contentList.OrderBy(p=>p.Title)) { sb.Append(content.Quicklink); sb.Append(" "); sb.Append(content.Title); sb.Append(Environment.NewLine); } Label1.Text = sb.ToString();,c#,arrays,C#,Arrays,如何根据str2值对列表进行排序,然后将密钥对值分配给标签。对于您拥有的linq: new List<string[]> list = new List<string[]>(); for (int i = 0; i < contentList.Count; i++) //contentList is a list which can have many rows of data... { string str1 = contentList[i].Quick
new List<string[]> list = new List<string[]>();
for (int i = 0; i < contentList.Count; i++) //contentList is a list which can have many rows of data...
{
string str1 = contentList[i].Quicklink; // Get data 1
string str2 = contentList[i].Title; // Get data 2
list.Add(new[] { str1, str2 });
}
//SORT THE LIST based by `str2`
for (int p = 0; p < list.Count; p++)
{
Label1.Text += str1 + " " + str2 "\r\n";;
}
然后你可以做:
var sorted = list.OrderBy(item => item[1]);
假设您不需要将
列表
用于任何其他目的,我们只需在一个循环中按我们想要的顺序迭代contentList
(这种方法的好处是可以更清楚地了解如何对数据进行排序)
注意:使用
StringBuilder
实现进行更新,并且只为Label1.Text指定了一个赋值。最简单的方法是使用LINQ:
var sb = new StringBuilder();
foreach (var c in contentList.OrderBy(x => x.Title))
{
sb.Append(String.Format("{0} {1}\r\n", c.QuickLink, c.Title));
}
Label1.Text = sb.ToString();
抱歉,无法测试它,因为我正在用手机应答。您可以使用sring.Concat,它有一个重载,可以接受IEnumerable
list.OrderBy(arr => arr[1]).ToList()
试一试
注意:字符串生成器非常方便,因为字符串是不可变的,并且不小心在字符串上使用+
运算符每次都会创建一个新字符串。字符串生成器阻止这种情况发生。list.OrderBy(x=>x[1])
?但是如果您只有并且总是有两个,那么列表
可能更有意义。我会避免重复更新那样的UI元素。更好的方法是使用StringBuilder
,然后在循环后分配Label1.Text
,但是这更容易输入,而且能让人明白这一点。OP可能只是复制你的代码,所以最好警告他们不要这样做。请看。@MatthewWatson更新为使用StringBuilder
和单个标签赋值:)简短而简单。谢谢。这里也有同样的评论:不要循环向控件.text
属性追加文本。每次迭代都会发送一条windows消息!。。。是的,在实际程序中,我会使用StreamBuilder,这只是对用户示例的更正。或者您甚至可以使用类似Label1.Text=string.Join(“\r\n”,list.OrderBy(item=>item[1])。选择(item=>string.Join(“,item))代码>事实上,使用StringBuilder来完成整个过程可能会稍微高效一些,因此您确实是对的。:)
list.OrderBy(arr => arr[1]).ToList()
var sorted = from l in list.OrderBy(item => item[1])
select l[0]+" "+l[1]+"\r\n";
Label1.Text = string.Concat(sorted);
StringBuilder sb = new StringBuilder();
foreach(var content in contentList.OrderBy(p=>p.Title)) {
sb.Append(content.Quicklink);
sb.Append(" ");
sb.Append(content.Title);
sb.Append(Environment.NewLine);
}
Label1.Text = sb.ToString();