using System;
using System.Linq;
using System.Collections.Generic;
namespace Chapter19
{
class SimpleLinqToObjects
{
static void Main(string[] args)
{
string[] names = { "James Huddleston", "Pearly", "Rupali Agarwal", "Fabio Claudio", "Vamika Agarwal", "Ami Knox", "Vidya Vrat Agarwal" };
IEnumerable<string> namesOfPeople = from name in names
where name.Length <= 16
select name;
foreach (string name in namesOfPeople)
Console.WriteLine(name);
Console.ReadLine();
}
}
}
可见,linq和SQL非常类似。linq可以用于数据库,xml文档,内存中的数据查询。
using System;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
namespace Chapter19
{
[Table]
public class stu
{
[Column]
public int studentID;
[Column]
public string studentName;
[Column]
public string studentSex;
}
class LinqToSql
{
static void Main(string[] args)
{
// connection string
string connString = @"
server = localhost;
integrated security = true;
database = student
";
// create data context
DataContext db = new DataContext(connString);
/*创建数据上下文,数据上下文执行与ADO.NET连接相同的操作,但是它也执行数据提供程序
所处理的操作。数据上下文不仅仅管理数据源的连接,也将linq请求(通过SQO表达)转换为
SQL,将该SQL传递给数据库服务器,并且通过结果集创建对象。《c#2008数据库入门经典(第4版)》*/
// create typed table
Table<stu> customers = db.GetTable<stu>();
// query database
var custs =
from c in customers
select
c
;
// display customers
foreach (var c in custs)
Console.WriteLine(
"{0}, {1}, {2}",
c.studentID,
c.studentName,
c.studentSex
);
Console.ReadLine();
}
}
}
linq确实简单,不需要数据库命令,打开关闭connection,创建阅读器。当c#看到var时,会用=右边的类型推断局部变量的类型。
要特别注意的是,由于变量的类型是通过变量初始值推断而来的,所以在声明变量的同时必需为变量指定初始值。并且,变量并不是没有类型的,
变量一旦初始化之后,类型就确定下来了,以后就只能存储某种类型的值了,比如上面的stringValue的类型经推断为string,所以该变量就只能保存string类型的值了。
本例中‘var’可以用‘stu’替换