c#3.0的Linq查询表达式特性

 我来答
邵峰9O58Qo
2016-06-01 · 超过61用户采纳过TA的回答
知道答主
回答量:184
采纳率:0%
帮助的人:134万
展开全部

C# 3.0中加入的最为复杂的特性就是Linq查询表达式了,这使我们可直接采用类似于SQL的语法对集合进行查询,这就使我们可以享受到关系数据查询的强大功能。
Linq查询表达式是建立在多种C# 3.0的新特性之上的,这也是我为什么最后才介绍Linq的原因。下面看一个例子:
class LinqExpression : AppRunner.AbstractApplication
{
public override void Run()
{
// 定义匿名数组persons, 并为其赋初值
var persons = new[] {
new { Name=Van's, Sex=false, Age=22 },
new { Name=Martin, Sex=true, Age=30 },
new { Name=Jerry, Sex=false, Age=24 },
new { Name=Brog, Sex=false, Age=25 },
new { Name=Vicky, Sex=true, Age=20 }
};
/*
执行简单Linq查询
检索所有年龄在24岁以内的人
查询结果放在results变量中
results变量的类型与数组persons相同
*/
var results = from p in persons
where p.Age <= 24
select p;
foreach (var person in results)
{
Console.WriteLine(person.Name);
}
Console.WriteLine();
// 定义匿名数组customers, 并为其赋初值
// 该数组是匿名类型的
var customers = new[] {
new {
Name=Van's, City=China, Orders=new[] {
new {
OrderNo=0,
OrderName=C# Programming Language(Second Edition),
OrderDate=new DateTime(2007,9, 5)
},
new {
OrderNo=1,
OrderName=Head First Design Patterns(Chinese Edition),
OrderDate=new DateTime(2007,9,15)
},
new {
OrderNo=2,
OrderName=ASP.NET Unleashed 2.0(Chinese Edition),
OrderDate=new DateTime(2007,09,18)
},
new {
OrderNo=3,
OrderName=The C++ Programming Langauge(Special Edition),
OrderDate=new DateTime(2002, 9, 20)
}
}
},
new {
Name=Brog, City=China, Orders=new[] {
new {
OrderNo=0,
OrderName=C# Programming Language(Second Edition),
OrderDate=new DateTime(2007, 9, 15)
}
}
},
new {
Name=Vicky, City=London, Orders=new[] {
new { OrderNo=0,
OrderName=C++ Programming Language(Special Edition),
OrderDate=new DateTime(2007, 9, 20)
}
}
}
};
/*
执行多重Linq查询
检索所在城市为中国, 且订单日期为2007年以后的所有记录
查询结果是一个匿名类型的数组
其中包含客户名, 订单号, 订单日期, 订单名四个字段
*/
var someCustomers = from c in customers
where c.City == China
from o in c.Orders
where o.OrderDate.Year >= 2007
select new { c.Name, o.OrderNo, o.OrderDate, o.OrderName };
foreach (var customer in someCustomers)
{
Console.WriteLine(
customer.Name + , + customer.OrderName + , +
customer.OrderDate.ToString(D)
);
}
}
}
从上面的例子中,我们可以看到Linq查询的强大特性,它允许我们进行简单查询,或者进行更为复杂的多重连接查询。且查询的结果还可以是自定义的匿名类型。
以上是对C# 3.0中新增的八大特性的简要介绍,如果想了解更为深入的内容,可查看C# 3.0的官方规范。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式