繁体   English   中英

如何对二维字符串数组进行排序并将其分配给标签

[英]How to sort a two dimensional string array and assign it to a label

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值对列表进行排序,然后将键对值分配给标签。

为此你有linq:

var sorted = list.OrderBy(item => item[1]);

然后你可以这样做:

foreach(var item in sorted)
    Label1.Text += item[0] + " " + item[1] + "\r\n"; //forgot the "+"

假设您并不真正需要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一次赋值。

最简单的方法是使用LINQ:

list.OrderBy(arr => arr[1]).ToList()

对不起,无法测试,因为我正在通过手机接听电话。

你可以使用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);

尝试

    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可以防止这种情况发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM