Welcome 微信登录

首页 / 网页编程 / ASP.NET / 数据库组件 Hxj.Data (十四) (联合查询)

数据库组件 Hxj.Data (十四) (联合查询)2011-07-21 博客园 steven hu联合查询在前面的例子中已经出现过,只不过没有细说。

先来个例子吧

DbSession.Default.From<Customers>()
.InnerJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID)
.ToDataTable();

生成的sql

Text:
SELECT * FROM [Customers] INNER JOIN [Orders] ON ([Customers].[CustomerID] = [Orders].[CustomerID])

是非常简单操作就完成了。

方法联合查询(sql)
InnerJoininner join
LeftJoinleft join
RightJoinright join
CrossJoincross join
FullJoinfull join
Unionunion
UnionAllunion all

还是上例子清爽一些

DbSession.Default.From<Customers>()
.LeftJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID)
.Where(Customers._.Country == "USA")
.ToDataTable();

生成的sql

Text:
SELECT * FROM [Customers]
LEFT OUTER JOIN [Orders]
ON ([Customers].[CustomerID] = [Orders].[CustomerID])
WHERE [Customers].[Country] = @e3c66f9aa65c498abfd76908621b567a
Parameters:
@e3c66f9aa65c498abfd76908621b567a[String] = USA

InnerJoin、LeftJoin、RightJoin、CrossJoin、FullJoin这个操作都是类似的。

三个表及以上关联例如

DbSession.Default.From<Customers>()
.InnerJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID)
.InnerJoin<Order_Details>(Order_Details._.OrderID == Orders._.OrderID)
.Where(Customers._.Country == "USA")
.ToDataTable();