数据源
查询
在上一个示例中,由于数据源是数组,因此它隐式支持泛型 IEnumerable(T) 接口。这一事实意味着该数据源
可以用
LINQ 进行查询。在 foreach 语句中执行查询,而 foreach 要求使用 IEnumerable 或 IEnumerable
(T)。支持 IEnumerable(T) 或派生接口(如泛型 IQueryable(T))的类型称为“可查询类型”。
可查询类型不需要进行修改或特殊处理就可以用作 LINQ 数据源。如果源数据还没有作为可查询类型出现在内
存中,则
LINQ 提供程序必须以此方式表示源数据。例如,LINQ to XML 将 XML 文档加载到可查询的
XElement 类型中:
在 LINQ to SQL 中,首先手动或使用 对象关系设计器(O/R 设计器) 在设计时创建对象关系映射。针对这些
对象编写查询,然后由
LINQ to SQL 在运行时处理与数据库的通信。在下面的示例中,Customer 表示数据库
中的特定表,并且
Table<Customer> 支持派生自 IEnumerable(T) 的泛型 IQueryable(T) 接口。
有关如何创建特定类型的数据源的更多信息,请参见各种 LINQ 提供程序的文档。但基本规则非常简单:LINQ
数据源是支持泛型 IEnumerable(T) 接口或从该接口继承的接口的任意对象。
C#
复制代码
// Create a data source from an XML document.
// using System.Xml.Linq;
XElement contacts = XElement.Load(@"c:\myContactList.xml");
C#
复制代码
// Create a data source from a SQL Server database.
// using System.Data.Linq;
DataContext db = new DataContext(@"c:\northwind\northwnd.mdf");
注意:
支持非泛型 IEnumerable 接口的类型(如 ArrayList)也可用作 LINQ 数据源。有关更多信息,请参见如
何:使用 LINQ 查询 ArrayList。
查询指定要从数据源中检索的信息。查询还可以指定在返回这些信息之前如何对其进行排序、分组和结构化。
查询存储在查询变量中,并用查询表达式进行初始化。为使编写查询的工作变得更加容易,
C# 引入了新的查
询语法。
上一个示例中的查询从整数数组中返回所有偶数。该查询表达式包含三个子句:from、where 和 select。
(如果您熟悉
SQL,您会注意到这些子句的顺序与 SQL 中的顺序相反。) from 子句指定数据源,where
子句应用筛选器,select 子句指定返回的元素的类型。LINQ 查询表达式(C# 编程指南)一节中详细讨论了
这些子句和其他查询子句。目前需要注意的是,在
LINQ 中,查询变量本身不执行任何操作并且不返回任何数
据。它只是存储在以后某个时刻执行查询时为生成结果而必需的信息。有关在幕后是如何构建查询的更多信
页码,2
4(W)w
2008/3/17ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv
linq/html/37895c02-268c-41d5-
...
评论0
最新资源