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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#3.0的Linq查询表达式特性相关的知识,希望对你有一定的参考价值。

参考技术A

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的官方规范。

Linq 表达式

一 什么是LINQ?

LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性。

二 简单的Linq例子。(简单形式我就不介绍了,主要以Lambda形式介绍)。

 1  首先创建一个实体对象类

 1 public class Person
 2     {
 3         public int Pid { get; set; }
 4 
 5         public string Name { get; set; }
 6 
 7         public int Age { get; set; }
 8 
 9         public int Sex { get; set; }
10     }

 

  

  

 

以上是关于c#3.0的Linq查询表达式特性的主要内容,如果未能解决你的问题,请参考以下文章

C#3.0中的新增功能09 LINQ 04 基本 LINQ 查询操作

C# 3.0新语言特性和改进

.NET面试题系列[13] - LINQ to Object

LINQ查询表达式基础

LINQ 查询表达式(C# 编程指南)

LINQ TO SQL