C#List排序所有元素

时间:2013-05-24 15:53:12

标签: c# list sorting

如何在包含Book项的c#中按ID排序列表?

static List<Book> sorted = new List<Book>();

public string title { get; set; }
public string summary { get; set; }
public int id { get; set; }
public int numberofauthors { get; set; }
public string author {get; set;}

但我想对整个列表进行排序,而不仅仅是sorted[k].id列。

3 个答案:

答案 0 :(得分:2)

尝试LINQ:

var sortedList = sorted.OrderBy(x => x.id).ToList();

答案 1 :(得分:0)

sorted.OrderBy(book => book.id);

这是你在想什么? 或许这个? http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx

我确信这个问题已经被回答了很多次。你试过谷歌吗?

答案 2 :(得分:0)

您可以使用List.Sort对此列表进行排序,而不是使用Enumerable.OrderBy + ToList来创建新列表。因此,您需要实施IComparable<Book>

class Book : IComparable<Book>
{
    public string title { get; set; }
    public string summary { get; set; }
    public int id { get; set; }
    public int numberofauthors { get; set; }
    public string author { get; set; }

    public int CompareTo(Book other)
    {
        if (other == null) return 1;

        return id.CompareTo(other.id);
    }
}

现在可行:

books.Sort();

在不更改课程的情况下,您还可以将List.Sort与自定义Comparison<Book>

一起使用
books.Sort((b1, b2) => b1.id.CompareTo(b2.id));