云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Hxj.Data 数据库组件文档

Hxj.Data 数据库组件文档

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 3:09:04

这个是一个空值,也就是无条件。 不会生成where条件。

条件的组合

两个条件同时成立:

Products._.UnitPrice > 1 && Products._.CategoryID == 2 等效sql就是 unitprice>1 and categoryid=2

两个条件或

Products._.UnitPrice > 1 || Products._.CategoryID == 2 等效sql就是 unitprice>1 or categoryid=2 也就是 && 表示左右条件同时成立

|| 表示左右条件有一个成立即可

组件重载了操作符: C# > >= <= < == != SQL > >= <= < = <> 写法和sql类似,也方便记忆与书写。

当然也可等效写为:

WhereClip where = WhereClip.All;

where = where.And(Products._.UnitPrice > 1); where = where.Or(Products._.CategoryID == 2);

where.And 等效于 && where.Or 等效于 ||

优先级可用()括起来,如下

(Products._.ProductName.Contain(\) && Products._.UnitPrice > 1) || Products._.CategoryID == 2

等效sql就是 (productname like ‘%apple%' and unitprice>1) or categoryid=2 也等效于

WhereClip where = WhereClip.All;

where = where.And(Products._.ProductName.Contain(\));

25

where = where.And(Products._.UnitPrice > 1); where = where.Or(Products._.CategoryID == 2); 下一节将讲述Field中生成条件的方法。

数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)

条件的生成都是通过对表中字段进行的。 比如:

Products._.UnitPrice > 1 Products._.CategoryID == 2 这些是简单的比较。

下面来介绍通过like 模糊查询该怎么做。

先上代码,Products._.ProductName.Contain(\) 这句等效sql就是(sqlserver) productname like ‘%apple%' 就是完全模糊搜索。

Products._.ProductName.BeginWith(\)

这句等效sql就是(sqlserver) productname like ‘apple%',属于左匹配,查找productname列中所有以apple开头的。 Products._.ProductName.EndWith(\)

这句等效sql就是(sqlserver) productname like ‘%apple',属于右匹配,查找productname列中所有以apple结尾的。 再来看看in查询

categoryid in (1,2,3) 类似该怎么处理呢? 看下面的例子:

DbSession.Default.From()

.Where(Products._.CategoryID.SelectIn(1, 2, 3)) .ToList(); 就是这么处理的。

26

生成的sql:

Text:

SELECT * FROM [Products] WHERE [Products].[CategoryID] IN

(@a5670053f4ae44f2a33eb5aaf54e9abf,@43f2ba0b559a45b38328b062c61f7caf,@4761cd088ce04ebf8d9670fb22417b8f)

Parameters:

@a5670053f4ae44f2a33eb5aaf54e9abf[Int32] = 1 @43f2ba0b559a45b38328b062c61f7caf[Int32] = 2 @4761cd088ce04ebf8d9670fb22417b8f[Int32] = 3

是不是符合要求了啊。

如果知道Products._.CategoryID类型,当然这里是int 那推荐的写法是:

DbSession.Default.From()

.Where(Products._.CategoryID.SelectIn(1, 2, 3)) .ToList(); 这样可减少一次装箱操作。 最终生成的sql也是一样的。 not in 的方法是SelectNotIn 操作是一样的。 如下:

DbSession.Default.From()

.Where(Products._.CategoryID.SelectNotIn(1, 2, 3))

.ToList(); 生成的sql

Text:

SELECT * FROM [Products] WHERE [Products].[CategoryID] NOT IN

(@a154584666f34bfaaa16bf8ede39774f,@7d3231666b19496f925a09b13d3541d0,@184523c709334fb299a736f4c402a163)

Parameters:

@a154584666f34bfaaa16bf8ede39774f[Int32] = 1 @7d3231666b19496f925a09b13d3541d0[Int32] = 2 @184523c709334fb299a736f4c402a163[Int32] = 3

这样查询是不是变的简单了啊。 下一节将讲述子查询。

27

数据库组件 Hxj.Data (十三) (子查询)

查询条件的值来自另外一次查询。 例如 sqlserver sql:

select * from products where categoryid=(select top 1 categoryid from categories where categoryname=’produce’) 这条sql的实现代码如下:

DbSession.Default.From()

.Where(Products._.CategoryID

.SubQueryEqual(DbSession.Default.From().Where(Categories._.CategoryName ==

\).Select(Categories._.CategoryID).Top(1))) .ToList(); 对比一下组件生成的sql

Text:

SELECT * FROM [Products]

WHERE [Products].[CategoryID] = ( SELECT TOP 1 [Categories].[CategoryID] FROM [Categories] WHERE [Categories].[CategoryName] = @174b5c8999e2480594cdc08ab4d8e5bd)

Parameters:

@174b5c8999e2480594cdc08ab4d8e5bd[String] = Produce

子查询方法对应sql表如下: 方法名称 SubQueryEqual SubQueryNotEqual SubQueryLess SubQueryLessOrEqual SubQueryGreater SubQueryGreaterOrEqual SubQueryIn SubQueryNotIn 再写一个例子

sql = <> < <= > >= in not in 28

搜索更多关于: Hxj.Data 数据库组件文档 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

这个是一个空值,也就是无条件。 不会生成where条件。 条件的组合 两个条件同时成立: Products._.UnitPrice > 1 && Products._.CategoryID == 2 等效sql就是 unitprice>1 and categoryid=2 两个条件或 Products._.UnitPrice > 1 || Products._.CategoryID == 2 等效sql就是 unitprice>1 or categoryid=2 也就是 && 表示左右条件同时成立 || 表示左右条件有一个成立即可 组件重载了操作符: C# > >= <= >= <= < = 写法和sql

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com