第11章Language Integrated QueryWord文档格式.docx

上传人:b****2 文档编号:4704960 上传时间:2023-05-03 格式:DOCX 页数:52 大小:35.45KB
下载 相关 举报
第11章Language Integrated QueryWord文档格式.docx_第1页
第1页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第2页
第2页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第3页
第3页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第4页
第4页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第5页
第5页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第6页
第6页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第7页
第7页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第8页
第8页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第9页
第9页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第10页
第10页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第11页
第11页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第12页
第12页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第13页
第13页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第14页
第14页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第15页
第15页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第16页
第16页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第17页
第17页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第18页
第18页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第19页
第19页 / 共52页
第11章Language Integrated QueryWord文档格式.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第11章Language Integrated QueryWord文档格式.docx

《第11章Language Integrated QueryWord文档格式.docx》由会员分享,可在线阅读,更多相关《第11章Language Integrated QueryWord文档格式.docx(52页珍藏版)》请在冰点文库上搜索。

第11章Language Integrated QueryWord文档格式.docx

类型的列表中搜索数据。

在搜索开始之前,必须确定对象类型和对象列表。

给对象定义类型Racer。

Racer定义了几个属性和一个重载的ToString()方法,该方法以字符串格式显示赛手。

这个类实现了接口IFormattable,以支持格式字符串的不同变体,这个类还实现了接口IComparable<

Racer>

,它根据Lastname为一组赛手排序。

为了执行更高级的查询,类Racer不仅包含单值属性,如Firstname、Lastname、Wins、Country和Starts,还包含多值属性,如Cars和Years。

Years属性列出了赛手获得冠军的年份。

一些赛手曾多次获得冠军。

Cars属性用于列出赛手在获得冠军的年份中使用的所有车型。

usingSystem;

usingSystem.Text;

namespaceWrox.ProCSharp.LINQ

{

[Serializable]

publicclassRacer:

IComparable<

IFormattable

publicstringFirstName{get;

set;

}

publicstringLastName{get;

publicintWins{get;

publicstringCountry{get;

publicintStarts{get;

publicstring[]Cars{get;

}

publicint[]Years{get;

publicoverridestringToString()

returnString.Format("

{0}{1}"

Firstname,Lastname);

publicintCompareTo(Racerother)

returnthis.lastname.CompareTo(other.lastname);

publicstringToString(stringformat)

returnToString(format,null);

publicstringToString(stringformat,IFormatProviderformatProvider)

switch(format)

casenull:

case"

N"

:

returnToString();

F"

returnFirstname;

L"

returnLastname;

C"

returnCountry;

S"

returnStarts.ToString();

W"

returnWins.ToString();

A"

{0}{1},{2};

"

+

starts:

{3},wins:

{4}"

FirstName,LastName,Country,

Starts,Wins);

default:

thrownewFormatException(String.Format(

Format{0}notsupported"

format));

类Formula1在GetChampions()方法中返回一组赛手。

这个列表包含了1950到2007年之间的所有一级方程式冠军。

usingSystem.Collections.Generic;

publicstaticclassFormula1

publicstaticIList<

GetChampions()

List<

racers=newList<

(40);

racers.Add(newRacer(){FirstName="

Nino"

LastName="

Farina"

Country="

Italy"

Starts=33,Wins=5,

Years=newint[]{1950},

Cars=newstring[]{"

AlfaRomeo"

}});

racers.Add(newRacer(){

FirstName="

Alberto"

Ascari"

Starts=32,Wins=10,

Years=newint[]{1952,1953},

Ferrari"

JuanManuel"

Fangio"

Country="

Argentina"

Starts=51,

Wins=24,Years=newint[]

{1951,1954,1955,1956,1957},

Maserati"

"

Mercedes"

Mike"

Hawthorn"

UK"

Starts=45,Wins=3,

Years=newint[]{1958},

Phil"

Hill"

USA"

Starts=48,Wins=3,

Years=newint[]{1961},

John"

Surtees"

Starts=111,Wins=6,

Years=newint[]{1964},

Jim"

Clark"

Starts=72,Wins=25,

Years=newint[]{1963,1965},

Lotus"

Jack"

Brabham"

Australia"

Starts=125,

Wins=14,

Years=newint[]{1959,1960,1966},

Cooper"

Denny"

Hulme"

NewZealand"

Starts=112,

Wins=8,

Years=newint[]{1967},

Graham"

Starts=176,Wins=14,

Years=newint[]{1962,1968},

BRM"

});

Jochen"

Rindt"

Austria"

Starts=60,Wins=6,

Years=newint[]{1970},

Jackie"

Stewart"

Starts=99,Wins=27,

Years=newint[]{1969,1971,1973},

Matra"

Tyrrell"

Emerson"

Fittipaldi"

Brazil"

Starts=143,

Wins=14,Years=newint[]{1972,

1974},

McLaren"

James"

Hunt"

Starts=91,Wins=10,

Years=newint[]{1976},

Mario"

Andretti"

Starts=128,Wins=12,

Years=newint[]{1978},

Jody"

Scheckter"

SouthAfrica"

Wins=10,

Years=newint[]{1979},

Alan"

Jones"

Starts=115,

Wins=12,

Years=newint[]{1980},

Williams"

Keke"

Rosberg"

Finland"

Starts=114,

Wins=5,

Years=newint[]{1982},

Niki"

Lauda"

Starts=173,Wins=25,

Years=newint[]{1975,1977,1984},

Nelson"

Piquet"

Starts=204,Wins=23,

Years=newint[]{1981,1983,1987},

Ayrton"

Senna"

Starts=161,Wins=41,

Years=newint[]{1988,1990,1991},

Nigel"

Mansell"

Starts=187,Wins=31,

Years=newint[]{1992},

Alain"

Prost"

France"

Starts=197,Wins=51,

Years=newint[]{1985,1986,1989,

1993},

Damon"

Starts=114,Wins=22,

Years=newint[]{1996},

Jacques"

Villeneuve"

Canada"

Starts=165,

Wins=11,Years=newint[]{1997},

Mika"

Hakkinen"

Starts=160,

Wins=20,Years=newint[]{1998,

1999},

Michael"

Schumacher"

Germany"

Starts=250,

Wins=91,

Years=newint[]{1994,1995,2000,

2001,2002,2003,2004},

Benetton"

Fernando"

Alonso"

Spain"

Starts=105,Wins=19,

Years=newint[]{2005,2006},

Renault"

Kimi"

ikk 

nen"

Starts=122,

Wins=15,Years=newint[]{2007},

returnracers;

对于后面在多个列表中执行的查询,GetConstructorChampions()方法返回所有的制造商冠军。

制造商冠军是从1958年开始设立的。

publicstaticIList<

Team>

GetContructorChampions()

List<

teams=newList<

(20);

teams.Add(newTeam(){Name="

Vanwall"

Years=newint[]{1958}});

Years=newint[]{1959,1960}});

Years=newint[]{1961,1964,1975,

1976,1977,1979,1982,1983,1999,

2000,2001,2002,2003,2004,2007}});

Years=newint[]{1962}});

Years=newint[]{1963,1965,1968,

1970,1972,1973,1978}});

Years=newint[]{1966,1967}});

Years=newint[]{1969}});

Years=newint[]{1971}});

Years=newint[]{1974,1984,1985,

1988,1989,1990,1991,1998}});

Years=newint[]{1980,1981,1986,

1987,1992,1993,1994,1996,1997}});

Years=newint[]{1995}});

Years=newint[]{2005,2006}});

returnteams;

现在进入对象查询的核心。

首先,需要用GetChampions()静态方法获得对象列表。

该列表放在泛型类List<

中。

这个类的FindAll()方法接收一个Predicate<

委托,该委托可以实现为一个匿名方法。

只返回Country属性设置为Brazil的赛手。

接着,用Sort()方法给得到的列表排序。

不应按照Lastname属性排序,因为这是Racer类的默认排序方式,而可以传送一个类型为Comparison<

的委托,该委托也实现为一个匿名方法,来比较夺冠次数。

使用r2对象,与r1比较,根据需要进行降序排序。

foreach语句最终迭代已排序的集合中的所有Racer对象。

privatestaticvoidObjectQuery()

(Formula1.GetChampions());

brazilRacers=racers.FindAll(

delegate(Racerr)

returnr.Country=="

;

brazilRacers.Sort(

delegate(Racerr1,Racerr2)

returnr2.Wins.CompareTo(r1.Wins);

foreach(RacerrinbrazilRacers)

Console.Wri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2