您的位置:首页 > 数据库

引用:从SQL 到 LINQ, Part 2: FROM 和 SELECT(Bill Horst)

2008-01-04 10:54 519 查看


引用:从SQL 到 LINQ, Part 2: FROM 和 SELECT(Bill Horst)

[原文作者]: Bill Horst

[原文链接]: Converting SQL to LINQ, Part 2: FROM and SELECT (Bill Horst)

在看这篇文章之前,我假定你已经读过了从SQL到LINQ,Part 1:基础

为了让代码示例更清晰,我修改了下列名字:

· Customers -> CustomerTable

· Orders -> OrderTable

· cust -> Contact

· CustomerName -> ContactName

· ID -> ContactID

欢迎你们的任何反馈和建议,你们的意见可以使以后的文章更清晰更有用。

好,现在开始讨论具体的子句(clauses),我们将从最基础的FROM和SELECT开始。

FROM

SQL的SELECT语句由SELECT子句开始,并且紧跟着一个FROM子句。而VB查询表达式则由From子句(或者Aggregate子句,我们稍后讨论)开始。一个基本SQL的FROM子句指定了一个要操作的表,一个LINQ的From子句指定了一个我们要操作的对象(CustomerTable)。这个对象可以表示“已在内存中的”(“In-Memory”)数据:比如一个SQL表,或者XML信息。因为使用这样的数据比较简单,我的例子也采用了”In-Memory”的数据。除了这个数据对象,VB的From子句还包含了一个指定当前“行”(Contact)别名的标识符。

如果要选择所有的列,在SQL中我们需要使用”*”,而在VB中,我们不需要附加任何东西,From子句默认返回所有的内容。

SQL

SELECT *

FROM CustomerTable

VB

From Contact In CustomerTable

FROM里的别名(alias)

SQL允许你在FROM子句中指定一个表的别名,LINQ同样允许我们这样做。

SQL

SELECT Contact.CustomerID, Contact.Phone

FROM CustomerTable Contact

VB

From Contact In CustomerTable

Select Contact.CustomerID, Contact.Phone

SELECT

SQL的SELECT语句由一个包含要select的内容的列表开始(Name, CustomerID)。 类似的,LINQ也允许你指定要select的内容,并将结果包装成一个匿名类型(anonymous type)返回。你指定的内容并不一定要是From子句指定对象的一部分,你可以指定任意合法的VB表达式(比如3+4)。如果成员的名字不能够被推断,你必须为其指定一个别名(见下面的“SELECT里的别名”)。

SQL

SELECT Name, CustomerID

FROM CustomerTable

VB

From Contact In CustomerTable

Select Contact.Name, Contact.CustomerID

SELECT里的别名

SQL允许SELCT子句的成员有别名(ContactName, ContactID),我们可以在查询语句的其它子句中使用这些别名。LINQ也允许别名,并且你可以在所有使用这个查询结果的代码中使用它们。

SQL

SELECT Name ContactName, CustomerID ContactID

FROM CustomerTable

VB

From Contact In CustomerTable

Select ContactName = Contact.Name, ContactID = Contact.CustomerID

下次我打算讲到DISTINCT, WHERE, ORDER BY 和运算符。

- Bill Horst, VB IDE Test
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: