首页 / 网页编程 / ASP.NET / 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)2011-07-21 博客园 steven hu条件的生成都是通过对表中字段进行的。比如:Products._.UnitPrice > 1Products._.CategoryID == 2这些是简单的比较。下面来介绍通过like 模糊查询该怎么做。先上代码,Products._.ProductName.Contain("apple")这句等效sql就是(sqlserver) productname like ‘%apple%"就是完全模糊搜索。Products._.ProductName.BeginWith("apple")这句等效sql就是(sqlserver) productname like ‘apple%",属于左匹配,查找productname列中所有以apple开头的。Products._.ProductName.EndWith("apple")这句等效sql就是(sqlserver) productname like ‘%apple",属于右匹配,查找productname列中所有以apple结尾的。再来看看 in 查询categoryid in (1,2,3) 类似该怎么处理呢?看下面的例子:DbSession.Default.From<Products>()
.Where(Products._.CategoryID.SelectIn(1, 2, 3))
.ToList();就是这么处理的。生成的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<Products>()
.Where(Products._.CategoryID.SelectIn<int>(1, 2, 3))
.ToList();这样可减少一次装箱操作。最终生成的sql也是一样的。not in 的方法是SelectNotIn操作是一样的。如下:DbSession.Default.From<Products>()
.Where(Products._.CategoryID.SelectNotIn<int>(1, 2, 3))
.ToList();生成的sqlText:
SELECT * FROM [Products]
WHERE [Products].[CategoryID]
NOT IN
(@a154584666f34bfaaa16bf8ede39774f,@7d3231666b19496f925a09b13d3541d0,@184523c709334fb299a736f4c402a163)
Parameters:
@a154584666f34bfaaa16bf8ede39774f[Int32] = 1 @7d3231666b19496f925a09b13d3541d0[Int32] = 2 @184523c709334fb299a736f4c402a163[Int32] = 3 这样查询是不是变的简单了啊。下一节将讲述子查询。