C#List能按照List中的对象某个属性排序

用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

猜你喜欢

转载自blog.csdn.net/VIP_CR/article/details/104939539