在查询没有设置查询字段,组件默认是返回所有字段信息,即select * from table

那在查询中如何设置需要返回的字段信息呢?

在之前几节中的例子已经存在设置查询字段,是通过 select方法来设置的。

先上例子:

DbSession.Default.From<Products>()
                .Select(Products._.ProductID, Products._.ProductName)
                .ToDataTable();

这里是设置查询只返回productid和productname两个字段。

生成的sql:

Text: 
SELECT [Products].[ProductID],[Products].[ProductName] FROM [Products]

 

有时候我们需要设置这个字段的别名,如select productname as pname from products

别名的设置也是非常简单的。

DbSession.Default.From<Products>()
                .Select(Products._.ProductID, Products._.ProductName.As("pname"))
                .ToDataTable();

通过字段的as方法来设置。

生成的sql

Text: 
SELECT [Products].[ProductID],[Products].[ProductName] AS [pname] FROM [Products]
是不是很简单的啊。
 
其实 Products._.ProductID  是一个Field类,表示字段信息。
Field也提供了一些简单的辅助方法。
方法 sql
Field.Count() count  记录数
Field.Sum() sum   合计
Field.Avg() avg   平均值
Field.Len() len  长度        
Field.Trim() 去掉左右空格
Field.Max() 最大值
Field.Min() 最小值
Field.Left(int length) 从左边开始截取相应长度内容
Field.Right(int length) 从右边开始截取相应长度内容
Field.Substring(int startIndex, int endIndex) 截取相应的范围内的字段内容

还是上例子吧

DbSession.Default.From<Products>()
               .Select(Products._.UnitPrice.Max())
               .ToScalar();
这里是查询products表中最大的unitprice.
生成的sql
Text: 
SELECT max([Products].[UnitPrice]) AS [UnitPrice] FROM [Products]
其他方法都是类似就不再一一举例了。
 
 
有时候我们需要两个字段加减乘除,比如单价乘以数量出来总价。
先来个例子:
DbSession.Default.From<Order_Details>()
                .Select((Order_Details._.UnitPrice * Order_Details._.Quantity).As("totalprice"))
                .Top(10)
                .ToDataTable();

生成的sql如下:

Text: 
SELECT TOP 10 [Order Details].[UnitPrice] * [Order Details].[Quantity] AS [totalprice] FROM [Order Details]
组件重载了 Field 的  + – * / 这四个操作符。
分别代表了加、减、乘、除
 
 
下一节将讲述事务。
posted on 2010-01-28 14:51  steven hu  阅读(3761)  评论(4编辑  收藏  举报