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";;
}
如何根据str2
值对列表进行排序,然后将键对值分配给标签。
答案 0 :(得分:5)
为此你有linq:
var sorted = list.OrderBy(item => item[1]);
然后你可以这样做:
foreach(var item in sorted)
Label1.Text += item[0] + " " + item[1] + "\r\n"; //forgot the "+"
答案 1 :(得分:2)
假设你不确实需要list
用于任何其他目的,我们可以通过迭代contentList
来实现这一点。我们想要的订单(这种方法有利于我们如何对数据进行排序更明显)。
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();
注意:使用StringBuilder
实施进行了更新,只有Label1.Text
的一项作业。
答案 2 :(得分:1)
最简单的方法是使用LINQ:
list.OrderBy(arr => arr[1]).ToList()
抱歉,我无法通过手机接听来测试它。
答案 3 :(得分:1)
你可以使用sring.Concat,它有一个接受IEnumerable的重载
var sorted = from l in list.OrderBy(item => item[1])
select l[0]+" "+l[1]+"\r\n";
Label1.Text = string.Concat(sorted);
答案 4 :(得分:1)
尝试
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();
注意: String Builder非常方便,因为字符串是不可变的,并且在字符串上使用+
运算符不小心每次都会创建一个新字符串。 String Builder可以防止这种情况发生。