using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
namespace LINQ
{
class Program
{
static void Main(string[] args)
{
#region;第一种查询语法编写
//这是一个看起来比较古怪的语句,类似于SQL语句,但他不是SQL语句,而是C#,在VS2012中输入这些代码时,from、where、select会突出显示为关键字,
//var开头声明结果变量,后边的查询表达式来给结果变量赋值。
string[] names = { "Alonso", "Zheng", "Smith", "Jones", "Smythe", "Small", "Ruiz", "Hsieh", "Jorgen", "Ilyich", "Singh", "Samba", "Fatimah" };
var queryResults = //var关键字用于声明一般变量类型,特别适合于包含LINQ查询的结果。var关键字告诉C#编译器,根据查询推断结果的类型,这样,就不必提前声明从LINQ查询返回对象的类型了,
//编译器会推断出该类型
from n in names //在names数组里边查找n,这个语句类似于foreach,但是不同的是他不必迭代所有的元素
where n.StartsWith("S") //限制条件
select n;//指定结果集中包含哪些元素
Console.WriteLine("Names beginning with S:");
foreach (var item in queryResults)//将结果迭代输出
{
Console.WriteLine(item);
}
//延迟执行的查询:foreach循环实际上并不是LINQ的一部分,他只是迭代结果。虽然foreach结构并不是LINQ的一部分,
//但是他是执行LINQ查寻的代码。查询结果变量queryResults仅仅保留了执行查寻的一个计划,在访问查询结果之前,并没有提取LINQ数据,
//这成为查询的延迟执行或者迟缓执行,也就是在进入foreach循环之前,queryResults里边是没有数据的
Console.ReadKey();
#endregion;
}
}
}