如何排序列表<t>?</t>

时间:2013-11-05 18:20:16

标签: c#

public class Checkit
{
  public string ID{ get; set; }
  public string b{ get; set; }
  public string c{ get; set; }
}

我有一个课程,我也使用List<T>这样:

Checkitcs = new Checkit();
List<Checkit> Lst_Ch = new List<Checkit>();

我希望按ID排序。例如:

Lst_Ch[1] = { ID=123 , b='afasfa' , c='afagas'}
Lst_Ch[2] = { ID=124 , b='afgasf' , c='afagas'}
Lst_Ch[3] = { ID=523 , b='afasfa' , c='afagas'}
Lst_Ch[4] = { ID=123 , b='afasfa' , c='afagas'}
Lst_Ch[5] = { ID=523 , b='afasfa' , c='afagas'}
Lst_Ch[6] = { ID=105 , b='afasfa' , c='afagas'}

我希望像那样排序:

Lst_Ch[6] = { ID=105 , b='afasfa' , c='afagas'}
Lst_Ch[1] = { ID=123 , b='afasfa' , c='afagas'}
Lst_Ch[4] = { ID=123 , b='afasfa' , c='afagas'}
Lst_Ch[2] = { ID=124 , b='afasfa' , c='afagas'}
Lst_Ch[5] = { ID=523 , b='afasfa' , c='afagas'}
Lst_Ch[5] = { ID=523 , b='afasfa' , c='afagas'}

如何对此列表进行排序?

2 个答案:

答案 0 :(得分:1)

您的示例代码无法编译,因为您的类的ID属性必须是int而不是string,并且您需要在字符串值周围加上双引号,像这样:

public class Checkit
{
    public int ID { get; set; }
    public string b { get; set; }
    public string c { get; set; }
}

List<Checkit> Lst_Ch = new List<Checkit>();
Lst_Ch.Add(new Checkit
{
    ID = 123,
    b = "afasfa",
    c = "afagas"
});
Lst_Ch.Add(new Checkit
{
    ID = 124,
    b = "afasfa",
    c = "afagas"
});
Lst_Ch.Add(new Checkit
{
    ID = 523,
    b = "afasfa",
    c = "afagas"
});
Lst_Ch.Add(new Checkit
{
    ID = 123,
    b = "afasfa",
    c = "afagas"
});        
Lst_Ch.Add(new Checkit
{
    ID = 523,
    b = "afasfa",
    c = "afagas"
});
Lst_Ch.Add(new Checkit
{
    ID = 105,
    b = "afasfa",
    c = "afagas"
});

其次,要对列表进行排序,请执行以下操作:

IEnumerable<Checkit> query = Lst_Ch.OrderBy(l => l.ID).ToList();

变量query现在是您的排序列表,您可以在其他地方使用,循环播放等。

答案 1 :(得分:0)

你可以

  • 使用Linq对其进行排序并创建新的List<T>。类似的东西:

    List<Foo> unsortedList = CreateAnUnorderedList() ;
    List<Foo> sortedList   = unsortedList.OrderBy( x => x.DateCreated )
                                         .ThenBy(  x => x.Id          )
                                         .ToList()
                                         ; 
    
  • 您可以对其进行排序。类似的东西:

    List<Foo> myList = CreateAnUnorderedList() ;
    myList.Sort( (x,y) => x.Id < y.Id ? -1 : x.Id > y.Id ? +1 : 0 ) ;
    

或者,您可以使用有序集合,例如SortedList<T>