我们将先介绍一个示例,这个示例使用 LINQ 创建了一个查询,以便在一个简单的内存对象数组中查找一些数据,并输出到控制台上。
试一试:第一个 LINQ 程序:按照下面的步骤在 Visual Studio 中创建示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Text;
(3)在 Program.cs 的 Main() 方法中添加如下代码:
static void Main(string[] args)
{ string[] names = { "Alonso", "Zheng", "Smith", "Jones", "Smythe",
"Small", "Ruiz", "Hsieh", "Jorgenson", "Ilyich", "Singh", "Samba", "Fatimah" };var queryResults =from n in nameswhere n.StartsWith("S") select n;Console.WriteLine("Names beginning with S:");foreach (var item in queryResults) { Console.WriteLine(item); }Console.Write("Program finished, press Enter/Return to continue:"); Console.ReadLine();
}
(4) 编译并运行程序(按下 F5 键即可开始调试),列表中的名称以 S 开头,按照它们在数组中的声明顺序排列,如下所示。
Names beginning with S:
Smith
Smythe
Small
Singh
Samba
Program finished, press Enter/Return to continue:
按下回车键,结束程序,关闭控制台屏幕。如果使用 Ctrl+F5 组合键(启动时不使用调试功能),就需要按下回车键两次,这会结束程序的运行。
示例的说明
第一步是引用 System.Linq 名称空间,这在创建项目时由 Visual Studio 自动完成:
using System.Ling;
所有的基本底层系统都支持 System.Linq 名称空间中用于 LINQ 的类。如果在Visual 之外部创建 C# 源文件或编辑以前版本创建的项目,就必须手动添加 using System.Linq 指令。
下一步创建一些数据,在本例中就是声明并初始化 names 数组:
string[] names = { "Alonso", "Zheng", "Smith", "Jones", "Smythe", "Small",
"Ruiz", "Hsieh", "Jorgenson", "Ilyich", "Singh", "Samba", "Fatimah" };
这些数据很少,很适合用于查询结果比较明显的示例。程序的下一部分是真正的 LINQ 查询语句:
var queryResults =from n in nameswhere n.StartsWith("S") select n;
这是一个看起来比较古怪的语句。它不像是C#语言,实际上 from.….where….select 语法类似于 SQL 数据库查询语言。但这个语句不是 SQL,而是 C#,在 VS中输入这些代码时,from、where 和 select会突出显示为关键字,这个古怪的语法对编译器而言是完全正确的。
这个程序中的 LINQ 查询语句使用了 LINQ 声明性查询语法:
var queryResults =from n in nameswhere n.StartsWith("S") select n;
该语句包括4个部分:以 var 开头的结果变量声明,使用查询表达式给该结果变量赋值,查询表达式包含 from 子句、where 子句和 select 子句。
微信公众号
DotNet讲堂