数据库组件 Hxj.Data (十五) (查询的排序、分组)
2010-01-27 21:43
591 查看
本节将讲述查询的排序(order by) 和 分组(group by)。
先说排序
在分页中如果没有指定排序,组件会默认一个排序来实现分页。
例如
生成的sql如下:
[/code]
这里就默认指定了productid作为排序。
当然我们也可自己指定排序,
生成的sql如下:
分页的时候就按照categoryid来正序排列。
排序在查询中设置的方法就是OrderBy( )
如果多个字段排序则如下操作:
生成的sql
[/code]
分组
通过方法GroupBy来设置按照哪些字段分组。
例如:
生成的sql:
[/code]
按照多个字段分组和多个排序类似。
sql:
[/code]
排序和分组都变得简单了。
下一节将讲述Field。
先说排序
在分页中如果没有指定排序,组件会默认一个排序来实现分页。
例如
DbSession.Default.From<Products>() .Page(10, 2) .Where(Products._.CategoryID.SelectIn(1, 2, 3)) .ToList();
生成的sql如下:
[code]Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] WHERE [Products].[CategoryID] IN (@c651c8c47b4f4b7587a65b1efeea17a2,@210f5286b2ec4ceabae99f4729d22a74,@5abe298074eb43e98016af330da896e1) ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC Parameters: @c651c8c47b4f4b7587a65b1efeea17a2[Int32] = 1 @210f5286b2ec4ceabae99f4729d22a74[Int32] = 2 @5abe298074eb43e98016af330da896e1[Int32] = 3
[/code]
这里就默认指定了productid作为排序。
当然我们也可自己指定排序,
DbSession.Default.From<Products>() .Page(10, 2) .Where(Products._.CategoryID.SelectIn(1, 2, 3)) .OrderBy(Products._.CategoryID.Asc) .ToList();
生成的sql如下:
Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] WHERE [Products].[CategoryID] IN (@2ba49ec0bf2e47558a06a5ec8a80476a,@1963fb47beb9421896891620c89abddb,@80d632cbcd5843958606bf85371a0428) ORDER BY [Products].[CategoryID] ASC) AS tempIntable ORDER BY [CategoryID] DESC) AS tempOuttable ORDER BY [CategoryID] ASC Parameters: @2ba49ec0bf2e47558a06a5ec8a80476a[Int32] = 1 @1963fb47beb9421896891620c89abddb[Int32] = 2 @80d632cbcd5843958606bf85371a0428[Int32] = 3
分页的时候就按照categoryid来正序排列。
排序在查询中设置的方法就是OrderBy( )
如果多个字段排序则如下操作:
DbSession.Default.From<Products>() .OrderBy(Products._.CategoryID.Asc && Products._.ProductID.Asc) .ToList();
生成的sql
[code]Text: SELECT * FROM [Products] ORDER BY [Products].[CategoryID] ASC,[Products].[ProductID] ASC
[/code]
分组
通过方法GroupBy来设置按照哪些字段分组。
例如:
DbSession.Default.From<Products>() .GroupBy(Products._.ProductName.GroupBy) .Select(Products._.ProductName) .ToDataTable();
生成的sql:
[code]Text: SELECT [Products].[ProductName] FROM [Products] GROUP BY [Products].[ProductName]
[/code]
按照多个字段分组和多个排序类似。
DbSession.Default.From<Products>() .GroupBy(Products._.ProductName.GroupBy && Products._.ProductID.GroupBy) .Select(Products._.ProductName,Products._.ProductID) .ToDataTable();
sql:
[code]Text: SELECT [Products].[ProductName],[Products].[ProductID] FROM [Products] GROUP BY [Products].[ProductName],[Products].[ProductID]
[/code]
排序和分组都变得简单了。
下一节将讲述Field。
相关文章推荐
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- 数据库组件 Hxj.Data (二十八)(事务中的查询,查询字段字中的子查询,WhereClip的隐式转换)
- 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
- 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
- 数据库组件 Hxj.Data (十三) (子查询)
- 数据库组件 Hxj.Data (二十八)(事务中的查询,查询字段字中的子查询,WhereClip的隐式转换)
- 数据库组件 Hxj.Data (十三) (子查询)
- 数据库组件 Hxj.Data (十六) (查询的字段)
- 数据库组件 Hxj.Data (三)(查询操作篇)
- 数据库组件 Hxj.Data (三)(查询操作篇)
- 数据库组件 Hxj.Data (十六) (查询的字段)
- 数据库查询之(Ⅱ)统计、分组(排序)查询
- 数据库组件 Hxj.Data (三十一)(MySQL篇)
- 数据库组件 Hxj.Data (二十三) (自定义缓存)
- 数据库组件 Hxj.Data (二十六)(Oracle 配置)
- 数据库组件 Hxj.Data (八)(存储过程篇)
- 数据库组件 Hxj.Data (五)(更新操作篇)
- 数据库组件 Hxj.Data (二十) (分页)
- 数据库组件 Hxj.Data (二十五)(数据库连接配置 - connectionStrings节点)
- 数据库组件 Hxj.Data (二)(实体生成工具)