C# 3.0语言新特性(四) - 查询表达式
在C# 3.0语言中,查询表达式成为编程语言的一个重要组成部分,它可以完成诸如以前一些SQL语句而完成的功能,该表达式可以得到很好的编译时语法检查。
例子:
void QueryExpressionDefinition()
{
var objContacts = new List<Contact>();
objContacts.Add(new Contact("Michael", "520-331-2718",
"33140 SW Liverpool Lane", "WA"));
objContacts.Add(new Contact("Jennifer", "503-998-1177",
"1245 NW Baypony Dr", "OR"));
objContacts.Add(new Contact("Sean", "515-127-3340",
"55217 SW Estate Dr", "WA"));
var WAContacts = from c in objContacts
where c.sState == "WA"
select new { c.sName,c.sPhone };
Console.WriteLine("Contacts in the state of Washington: ");
foreach (var c in WAContacts)
{
Console.WriteLine("Name: {0}, Phone: {1}", c.sName , c.sPhone );
}
}
public class Contact
{
public string sName;
public string sPhone;
public string sAddress;
public string sState;
public Contact(string name, string phone,
string address, string state)
{
sName = name;
sPhone = phone;
sAddress = address;
sState = state;
}
}
执行结果是:
Contacts in the state of Washington:
Name: Michael, Phone: 520-331-2718
Name: Sean, Phone: 515-127-3340
请按任意键继续. . .
其中,var WAContacts = from c in objContacts
where c.sState == "WA"
select new { c.sName,c.sPhone };
是查询表达式,它的基本含义是:
var WAContancts = objContacts.
Where( c=> c.sState == “WA”)
.Select( c=> new Contact(c.sName,c.sPhone));
其中的参数是Lambda表达式,它的含义是前面介绍过的delegate声明的匿名方法。
而现在的查询表达式则用到了扩展方法
(待续)