RSS 2.0 Feed
Converting SQL to LINQ

LINQ的核心要求任何数据源能够被查询,这基本上意味着它必须实现IEnumerable接口(实际情况要更复杂一点,详细的说明请参见Visual Basic 9.0语言规范之11.21.2一节,)。现在,当使用LINQ对Dataset进行工作时我们就有了一个问题:DataTable没有实现IEnumerable,那么我们该如何来对它进行查询?

posted @ | Feedback (5) | Filed Under [ VB Team Blog LINQ Cookbook Converting SQL to LINQ ]

摘要:[原文作者]: Bill Horst [原文链接]: Converting SQL to LINQ, Part 1: The Basics 你可能已经知道了,VB的LINQ指令允许使用类SQL语法的查询。LINQ的语法并不和SQL的语法完全一致,所以如果你现在已经在用SQL或者熟悉SQL查询的话,你可能会想把已经存在的SQL查询转化为LINQ。 这篇文章就是“从SQL到LINQ”系列的第一篇。在这篇文章里,我想让大家对SQL和LINQ的区别有一个基本的理解,下次我们会涉及到具体的语言架构。   假定   在接下来的例子, SQL代码会涉及到两个table:Customers和Orders,VB代码会用到与之同名的两个对象,他们的类型分别是IEnumerable(Of Customer)和IEnumerable(Of Order)。我还会用到两个类,同样是Customer和Order,如下: Class Customer     Public CustomerID As Integer     Public Name As String     Public Phone As String     Public Address As String     Public City As String     Public State As String     Public Zip As String End Class   Class Order     Public OrderID As Integer     Public CustomerID As Integer     Public Cost As Single     Public Phone As String     Public OrderDate As DateTime     Public ShippingZip As String     Public ItemName As String End Class   基本语法   LINQ支持SQL SELECT语句,而不支持其他的,比如CREATE, INSERT, UPDATE 和 DELETE。你可以认为SQL SELECT语句的基本语法是一系列的“子句”(clauses),其中的第一个是SELECT子句。 sqlSelectClause......[阅读全文]

posted @ | Feedback (7) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

在看这篇文章之前,我假定你已经读过了: 从SQL到LINQ,Part 1:基础 从SQL到LINQ,Part 2:FROM和SELECT 从SQL到LINQ,Part 3:DISTINCT, WHERE, ORDER BY 和 操作符 这篇文章讨论的是标量函数(scalar functions)和聚合函数(aggregate functions)。

posted @ | Feedback (2) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

在看这篇文章之前,我假定你已经读过了: 从SQL到LINQ,Part 1:基础 从SQL到LINQ,Part 2:FROM和SELECT 继续我们的话题,这次我将涉及的主题是DISTINCT, WHERE 和 ORDER BY相关的内容。

posted @ | Feedback (4) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

摘要:[原文作者]: 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...[阅读全文]

posted @ | Feedback (3) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

本文假定您已阅读过本系列中此前发表的文章: 从SQL 到 LINQ, Part 1: 基础(Bill Horst) 从SQL 到 LINQ, Part 2: FROM 和 SELECT(Bill Horst) Converting SQL to LINQ, Part 3: DISTINCT, WHERE, ORDER BY and Operators Converting SQL to LINQ, Part 4: Functions 本文将讨论GROUP BY和HAVING子句.

posted @ | Feedback (1) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

本文假设您已阅读了本系列中此前发表的文章: 从SQL 到 LINQ, Part 1: 基础(Bill Horst) 从SQL 到 LINQ, Part 2: FROM 和 SELECT(Bill Horst) Converting SQL to LINQ, Part 3: DISTINCT, WHERE, ORDER BY and Operators Converting SQL to LINQ, Part 4: Functions Converting SQL to LINQ, Part 5: GROUP BY and HAVING Converting SQL to LINQ, Part 6: Joins 本文中我们将讨论一下合并, TOP 和子查询. 下个星期, 我打算更深入地介绍一下LEFT, RIGHT 和 FULL OUTER JOIN. 如果你想了解关于转换SQL到LINQ的其他问题, 请回复本文.

posted @ | Feedback (2) | Filed Under [ VB Team Blog Converting SQL to LINQ ]

本文假设您已阅读了本系列中此前发表的文章: 从SQL 到 LINQ, Part 1: 基础(Bill Horst) 从SQL 到 LINQ, Part 2: FROM 和 SELECT(Bill Horst) Converting SQL to LINQ, Part 3: DISTINCT, WHERE, ORDER BY and Operators Converting SQL to LINQ, Part 4: Functions Converting SQL to LINQ, Part 5: GROUP BY and HAVING 本文将讨论一下交叉联接Cross Join, 内联接Inner Join, 自然联接Natural Join 和外(左/右)联接 Outer (Left/Right) Join.

posted @ | Feedback (2) | Filed Under [ VB Team Blog Converting SQL to LINQ ]