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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Collections;namespaceConsoleApplication1{[Serializable]publicclassRacer:IComparable<Racer>,IFormattable{publicstringFirstName{get;privateset;}//第一个武将publicstringLastName{get;privateset;}//第二个武将publicintWins{get;privateset;}//赢得次数publicstringCountry{get;privateset;}//国家publicintStarts{get;privateset;}//开始publicstring[]Arms{get;privateset;}//武器publicint[]Years{get;privateset;}//年份publicRacer(stringfirstname="",stringlasename="",intwins=0,stringcountry="",intstarts=0,IEnumerable<string>Arms=null,IEnumerable<int>years=null){this.FirstName=firstname;this.LastName=lasename;this.Wins=wins;this.Country=country;this.Starts=starts;List<string>LArms=newList<string>();foreach(variteminArms){LArms.Add(item);}this.Arms=LArms.ToArray();List<int>Lyears=newList<int>();foreach(variteminyears){Lyears.Add(item);}this.Years=Lyears.ToArray();}publicintCompareTo(Racerother){if(other==null)thrownewArgumentNullException("对象不能为空");returnthis.Wins.CompareTo(other.Wins);}publicstringToString(stringformat,IFormatProviderformatProvider){switch(format){case"":returnToString();case"C":StringBuildersb=newStringBuilder();foreach(variteminArms){sb.Append(item+",");}returnsb.ToString().TrimEnd(',');case"Y":StringBuildersb2=newStringBuilder();foreach(variteminYears){sb2.Append(item+",");}returnsb2.ToString().TrimEnd(',');default:returnToString();}}publicoverridestringToString(){returnstring.Format("第一个赛手:{0},最后一个赛手:{1},赢的次数:{2},国家:{3},开始:{4}",this.FirstName,this.LastName,this.Wins.ToString(),this.Country,this.Starts.ToString());}}}

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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{publicclassTeam{publicstringName{get;privateset;}//团队名称publicint[]Years{get;privateset;}publicTeam(stringname,paramsint[]years){this.Name=name;this.Years=years;}}}

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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{publicstaticclassFormula{privatestaticList<Racer>racers;privatestaticList<Team>team;publicstaticIList<Racer>GetChampions(){if(racers==null){racers=newList<Racer>();racers.Add(newRacer("张飞","关羽",100,"蜀国",10,newstring[]{"丈八蛇矛","青龙偃月刀"},newint[]{200,201,202}));racers.Add(newRacer("黄忠","魏延",80,"蜀国",10,newstring[]{"穿杨弓","大***"},newint[]{203}));racers.Add(newRacer("许褚","典韦",95,"魏国",10,newstring[]{"大铁锤","双戟"},newint[]{195,212}));racers.Add(newRacer("张辽","徐晃",90,"魏国",10,newstring[]{"长把子刀","长把子斧"},newint[]{205,106,215}));racers.Add(newRacer("程普","黄盖",96,"吴国",10,newstring[]{"龙虎鞭","大刀"},newint[]{190,191,202,207}));racers.Add(newRacer("周泰","太史慈",88,"吴国",10,newstring[]{"无敌身躯","火箭枪"},newint[]{195,196,197}));}returnracers;}publicstaticIList<Team>GetConstructorChampions(){if(team==null){team=newList<Team>();team.Add(newTeam("兄弟队",newint[]{200,201,202}));team.Add(newTeam("死党队",newint[]{203}));team.Add(newTeam("虎营队",newint[]{195,212}));team.Add(newTeam("良将队",newint[]{205,106,215}));team.Add(newTeam("老将队",newint[]{190,191,202,207}));team.Add(newTeam("不死队",newint[]{195,196,197}));}returnteam;}}}

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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){varquery=fromrinFormula.GetChampions()wherer.Country=="蜀国"orderbyr.Winsdescendingselectr;foreach(variteminquery){Console.WriteLine("{0}",item);}Console.ReadKey();//===============================================扩展方法List<Racer>RacersCondition=newList<Racer>(Formula.GetChampions());//Where:扩展方法,用于筛选//OrderBy:扩展方法,用于排序//Select:扩展方法,将值投放到新表中IEnumerable<Racer>RacersResult=RacersCondition.Where(r=>r.Country=="吴国").OrderBy(r=>r.Wins).Select(r=>r);foreach(variteminRacersResult){Console.WriteLine(item);}Console.ReadKey();}}}