如何根据变量编号对列表进行排序

时间:2019-08-15 18:07:09

标签: c# string list sorting contains

我创建了一个列表,该列表具有可变值。我想按变量值对该列表进行排序。

我需要通过stBirthday降序设置订单并添加文本框 stBirthday值,如 11081990 07051993 01012001 ,但仍在变化。

string stName = null;
string stSurname = null;
int stBirthday = 0;
ArrayList myList = new ArrayList();

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    for (int i = 0; i < 5; i++)
        myList.Add(stName + stSurname + stBirthDay);
}
private void List_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 5; i++)
        textBox1.Text += myList[i];
}

例如列表值;

mylist[0]= "Johnnie" + "Black" + 03041993
mylist[1]= "Gregory" + "Elliott" + 28071997
mylist[2]= "Kristopher" + "Bridges" + 11231998
mylist[3]= "Olive" + "Higgins" + 05122001

我想这样排序

"Gregory" + "Elliott" + 28071997
"Kristopher" + "Bridges" + 11231998
"Olive" + "Higgins" + 05122001
"Johnnie" + "Black" + 03041993

按生日值排序= 28071997> 11231998> 05122001> 03041993

2 个答案:

答案 0 :(得分:0)

在排序之前将其转换为日期,然后您将获得预期的结果,当前您正在对一个整数进行排序

答案 1 :(得分:0)

Rufus提供了最好的解决方案。 C#是面向对象的。您可以使用字符串,使用linq-expression和Regex进行排序来实现相同的目的,但这确实很尴尬。订购列表后,您可以执行以下操作:

public class Person 
{ 
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public DateTime DateOfBirth { get; set; } 
} 

var people = new List<Person>(); 
/* adding people comes here */

// sorting
var orderedPeople = people.OrderByDescending(person => 
                    person.DateOfBirth);
textBox1.Text = String.Join(" ", 
               from p in orderedPeople 
               select p.FirstName+p.LastName+p.DateOfBirth.ToString("ddMMyyyy")
               );