成都网站建设设计

将想法与焦点和您一起共享

Linq简单的查询,扩展方法

----------------------------------------------------Racer.cs

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的奎文网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
 
namespace ConsoleApplication1
{
    [Serializable]
    public class Racer:IComparable,IFormattable
    {
        public string FirstName { get; private set; }//第一个武将
        public string LastName { get; private set; }//第二个武将
        public int Wins { get; private set; }//赢得次数
        public string Country { get; private set; }//国家
        public int Starts { get; private set; }//开始
        public string[] Arms { get; private set; }//武器
        public int[] Years { get; private set; }//年份
        public Racer(string firstname = "", string lasename = "", int wins = 0, string country = "", int starts = 0, IEnumerable Arms = null, IEnumerable years = null)
        {
            this.FirstName = firstname;
            this.LastName = lasename;
            this.Wins = wins;
            this.Country = country;
            this.Starts = starts;
            List LArms = new List();
            foreach (var item in Arms)
            {
                LArms.Add(item);
            }
            this.Arms = LArms.ToArray();
            List Lyears = new List();
            foreach (var item in years)
            {
                Lyears.Add(item);
            }
            this.Years = Lyears.ToArray();
        }
        public int CompareTo(Racer other)
        {
            if (other == null) throw new ArgumentNullException("对象不能为空");
            return this.Wins.CompareTo(other.Wins);
        }
        public string ToString(string format, IFormatProvider formatProvider)
        {
            switch (format)
            { 
                case "":
                    return ToString();
                case "C":
                    StringBuilder sb = new StringBuilder();
                    foreach (var item in Arms)
                    {
                        sb.Append(item + ",");
                    }
                    return sb.ToString().TrimEnd(',');
                case "Y":
                   StringBuilder sb2 = new StringBuilder();
                    foreach (var item in Years)
                    {
                        sb2.Append(item + ",");
                    }
                    return sb2.ToString().TrimEnd(',');
                default:
                    return ToString();
            }
        }
        public override string ToString()
        {
            return string.Format("第一个赛手:{0},最后一个赛手:{1},赢的次数:{2},国家:{3},开始:{4}",this.FirstName,this.LastName,this.Wins.ToString(),this.Country,this.Starts.ToString());
        }
    }
}

 ----------------------------------------------------Team.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    public class Team
    {
        public string Name { get; private set; }//团队名称
        public int[] Years { get; private set; }
        public Team(string name,params int[] years)
        {
            this.Name = name;
            this.Years = years;
        }
    }
}

----------------------------------------------------Formula.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    public static class Formula
    {
        private static List racers;
        private static List team;
        public static IList GetChampions()
        {
            
            if (racers == null)
            {
                racers = new List();
                racers.Add(new Racer("张飞", "关羽", 100, "蜀国", 10, new string[] { "丈八蛇矛", "青龙偃月刀" }, new int[] { 200, 201, 202 }));
                racers.Add(new Racer("黄忠", "魏延", 80, "蜀国", 10, new string[] { "穿杨弓", "大***" }, new int[] {203}));
                racers.Add(new Racer("许褚", "典韦", 95, "魏国", 10, new string[] { "大铁锤", "双戟" }, new int[] { 195, 212 }));
                racers.Add(new Racer("张辽", "徐晃", 90, "魏国", 10, new string[] { "长把子刀", "长把子斧" }, new int[] { 205, 106, 215 }));
                racers.Add(new Racer("程普", "黄盖", 96, "吴国", 10, new string[] { "龙虎鞭", "大刀" }, new int[] { 190, 191, 202,207 }));
                racers.Add(new Racer("周泰", "太史慈", 88, "吴国", 10, new string[] { "无敌身躯", "火箭枪" }, new int[] { 195, 196, 197 }));
            }
            return racers;
        }
        public static IList GetConstructorChampions()
        {
            if (team == null)
            {
                team = new List();
                team.Add(new Team("兄弟队", new int[] { 200, 201, 202 }));
                team.Add(new Team("死党队", new int[] { 203 }));
                team.Add(new Team("虎营队", new int[] { 195, 212 }));
                team.Add(new Team("良将队", new int[] { 205, 106, 215 }));
                team.Add(new Team("老将队", new int[] { 190, 191, 202, 207 }));
                team.Add(new Team("不死队", new int[] { 195, 196, 197 }));
            }
            return team;
        }
       

    }
}

----------------------------------------------------主程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var query = from r in Formula.GetChampions()
                        where r.Country == "蜀国"
                        orderby r.Wins descending
                        select r;
            foreach (var item in query)
            {
                Console.WriteLine("{0}",item);
            }
            Console.ReadKey();

            
            //===============================================扩展方法
            List RacersCondition = new List(Formula.GetChampions());
            //Where:扩展方法,用于筛选
            //OrderBy:扩展方法,用于排序
            //Select:扩展方法,将值投放到新表中
            IEnumerable RacersResult = RacersCondition.Where(r => r.Country == "吴国").OrderBy(r => r.Wins).Select(r => r);
            foreach (var item in RacersResult)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

 


当前题目:Linq简单的查询,扩展方法
网站网址:http://chengdu.cdxwcx.cn/article/iggcsp.html