如何在包含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
列。
答案 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));