list排序用法

sort

  RankItem liXiaoYao = new RankItem("李逍遥",199,16000,20000);
            RankItem zhaoLingEr = new RankItem("赵灵儿",199,16000,12000);
            RankItem tangYuXiaoBao = new RankItem("唐钰小宝",165,14300,50000);
            RankItem jiuJianXian = new RankItem("酒剑仙",200,20000,0);
            RankItem linYueRu = new RankItem("林月如",160,12000,30000);

            List<RankItem> ranks = new List<RankItem>();

            ranks.Add(liXiaoYao);
            ranks.Add(zhaoLingEr);
            ranks.Add(tangYuXiaoBao);
            ranks.Add(jiuJianXian);
            ranks.Add(linYueRu);

            foreach(RankItem value in ranks)
            {
                Console.WriteLine(value.playerName+" "+value.level+"  "+
                    value.AD+" "+value.gold
                    );
            }

            ranks.Sort(CompareTo);
            Console.WriteLine("*****************排序后********************");
            foreach (RankItem value in ranks)
            {
                Console.WriteLine(value.playerName + " " + value.level + "  " +
                    value.AD + " " + value.gold
                    );
            }
        }
        /// <summary>
        /// 比较规则
        /// </summary>
        /// <param name="back"></param>
        /// <param name="before"></param>
        /// <returns>
        ///     如果需要交换  返回-1;
        ///     不需要交换    返回1;
        ///     返回0    交不交换不一定
        /// 
        /// </returns>
        static int CompareTo(RankItem back,RankItem before)
        {
            if (back.level > before.level)
            {
                //判断等级
                return -1;
            }
            else
            { 
                //<=
                if (back.level == before.level)
                {
                    //等级相同 判断战力
                    if (back.AD > before.AD)
                    {
                        return -1;
                    }
                    else
                    {
                        if (back.AD == before.AD)
                        {
                            //战力相同判断金币
                            if (back.gold > before.gold)
                            {
                                return -1;
                            }
                        }
                    }
                }


            }

            return 1;
        }
    }
    class RankItem
    {
        public string playerName;

        public int level;

        public int AD;

        public int gold;

        public RankItem(string playerName,int level,int AD,int gold)
        {
            this.playerName = playerName;
            this.level = level;
            this.AD = AD;
            this.gold = gold;
        }
    }


}

猜你喜欢

转载自blog.csdn.net/qq_44181268/article/details/86482228