List排序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp
{
    public class Student
    {
        public string Name;
        public int Score;
        public Student(string name, int score)
        {
            this.Name = name;
            this.Score = score;
        }
    }

    public class ListSortTest
    {

        public void sort() 
        {
            //元数据
            #region
            List<Student> students = new List<Student>()  { new Student("Student A", 90),
                                                            new Student("Student B", 75),
                                                            new Student("Student C", 83),
                                                            new Student("Student D", 94),
                                                            new Student("Student E", 60),
                                                            new Student("Student X", 60),
                                                            new Student("Student Y", 60),
                                                            new Student("Student F", 56),
                                                            new Student("Student G", 30),
                                                            new Student("Student I", 73),
                                                            new Student("Student J", 68),
                                                            new Student("Student K", 46)};

            foreach (var stu in students)
            {
                Console.WriteLine("Name: {0}, Score: {1} ", stu.Name, stu.Score);
            }
            #endregion

            ////排序1
            //students.Sort((x, y) => { return -x.Score.CompareTo(y.Score); });
            students.Sort(delegate(Student a, Student b)
            {
                int xdiff = -a.Score.CompareTo(b.Score);
                if (xdiff != 0)
                    return xdiff;
                else
                    return a.Name.CompareTo(b.Name);
            });

            // ---- 排序後(分數由高到低) (若相同按名称)
            Console.WriteLine("\n----------排序後(分數由高到低,若相同按名称)-------\n");
            foreach (var stu in students)
                Console.WriteLine("Name: {0}, Score: {1} ", stu.Name, stu.Score);


            ////排序2
            //var v = from c in students
            //        orderby c.Score descending, c.Name descending
            //        select c;
            //students = v.ToList();

            //// ---- 排序後(分數由高到低) (若相同按名称)
            //Console.WriteLine("\n----------排序後(分數由高到低,若相同按名称)-------\n");

            //foreach (var stu in students)
            //    Console.WriteLine("Name: {0}, Score: {1} ", stu.Name, stu.Score);


            #region
            //// ---- 不及格的學生
            //Console.WriteLine("\n------------不及格的學生------------\n");
            //var query = from stu in students
            //            where stu.Score < 60
            //            select stu;

            //foreach (var q in query)
            //    Console.WriteLine("Name: {0}, Score: {1} ", q.Name, q.Score);
            #endregion

        }
    }


}

 http://www.dotblogs.com.tw/timchang/archive/2012/10/24/78823.aspx
http://stackoverflow.com/questions/289010/c-sharp-list-sort-by-x-then-y

posted @ 2013-11-25 20:49  streetpasser  阅读(252)  评论(0编辑  收藏  举报