-1

如何在 c# 中按 id 对包含Book项目的列表进行排序?

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列。

4

3 回答 3

2

尝试 LINQ:

var sortedList = sorted.OrderBy(x => x.id).ToList();
于 2013-05-24T15:54:38.463 回答
0

您可以使用List.Sortwhich does sort this list 而不是Enumerable.OrderBy+ ToListwhat 创建一个新列表。因此,您需要实施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));
于 2013-05-24T15:58:01.463 回答
0
sorted.OrderBy(book => book.id);

这是你在想的吗?或者也许是这个? http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx

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

于 2013-05-24T15:56:57.947 回答