用List泛型存储了自定义的结构体,现需要根据结构体的一个成员进行排序。在论坛看到了类似的示例,并参照成功解决了问题,在此备注下,希望能帮到更多的人。
public class Book
{
public Book(string inname, string inauthor, string inpublisher, int inprice)
{
this.Name = inname;
this.Author = inauthor;
this.Publisher = inpublisher;
this.Price = inprice;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string author;
public string Author
{
get { return author; }
set { author = value; }
}
private string publisher;
public string Publisher
{
get { return publisher; }
set { publisher = value; }
}
private int price;
public int Price
{
get { return price; }
set { price = value; }
}
}
//比较器类
public class Icp:IComparer<Book>
{
//按书名排序
public int Compare(Book x, Book y)
{
return x.Name.CompareTo(y.Name);
}
}
public class IcpPrice : IComparer<Book>
{
//按价格排序
public int Compare(Book x, Book y)
{
return x.Price.CompareTo(y.Price);
}
}
//main方法
static void Main(string[] args)
{
List<Book> list = new List<Book>();
Book b1, b2, b3, b4;
b1 = new Book("《绝代双骄》", "古龙", "中国长安出版社", 50);
b2 = new Book("《鹿鼎记》", "金庸", "人民文学出版社", 120);
b3 = new Book("《三国演义》", "罗贯中", "中州古籍出版社", 200);
b4 = new Book("《西游记》", "吴承恩", "晨光出版社", 80);
list.Add(b1);
list.Add(b2);
list.Add(b3);
list.Add(b4);
//按书名升序
Console.WriteLine("/按书名升序/");
list.Sort(new Icp());
foreach(Book book in list)
{
Console.WriteLine(book.Name+book.Author+book.Publisher+book.Price);
}
Console.WriteLine("");
//按价格降序序
Console.WriteLine("/按书名升序/");
list.Sort(new IcpPrice());
foreach (Book book in list)
{
Console.WriteLine(book.Name + book.Author + book.Publisher + book.Price);
}
Console.WriteLine("");
Console.Read();
}
————————————————
版权声明:本文为CSDN博主「召唤师峡谷」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/giser_whu/article/details/38761025