c# 数组自定义排序

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

namespace OrderList
{
    class Program
    {
        public class Test
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
        private static List<Test> ListStock()
        {
            List<Test> foos = new List<Test>
            {
                new Test
                { 
                    Id = 0,
                    Name = "a" 
                }, 
                new Test
                { 
                    Id = 0, 
                    Name = "b" 
                },
                new Test
                { 
                    Id = 1,
                    Name = "c" 
                }, 
                new Test
                { 
                    Id = 2, 
                    Name = "d" 
                },
                new Test
                {
                    Id = 2,
                    Name = "e"
                },
                new Test
                {
                    Id = 2,
                    Name = "f"
                },
                new Test
                {
                    Id = 2,
                    Name = "g"
                }

            };
            return foos;
        }
        static void Main(string[] args)
        {                     
            List<Test> t = ListStock();
            Console.WriteLine("排序前");
            foreach (var v in t)
            {               
                Console.WriteLine(string.Format("Id:{0},Name:{1}", v.Id, v.Name));
            }
            Console.WriteLine("-");
            int[] orderArr = new int[] { 1,2,2,2,2,1,0,0};
            t = t.OrderBy(e =>
            {
                var index = 0;
                index = Array.IndexOf(orderArr, e.Id);
                if (index != -1) { return index; }
                else
                {
                    return int.MaxValue;
                }

            }).ToList();
          
            Console.WriteLine("排序后");
            //foreach (var v in t)
            //{
            //    Console.WriteLine(string.Format("Id:{0},Name:{1}", v.Id, v.Name));
            //}
            Console.WriteLine("-");
            t.ForEach(p =>
            {
                Console.WriteLine(string.Format("Id:{0},Name:{1}", p.Id, p.Name));
            });
            Console.WriteLine("-");
            Console.ReadLine();
        }
    }
}
排序前
Id:0,Name:a
Id:0,Name:b
Id:1,Name:c
Id:2,Name:d
Id:2,Name:e
Id:2,Name:f
Id:2,Name:g
-
排序后
-
Id:1,Name:c
Id:2,Name:d
Id:2,Name:e
Id:2,Name:f
Id:2,Name:g
Id:0,Name:a
Id:0,Name:b
-

  

原文地址:https://www.cnblogs.com/dqh123/p/15358677.html