FriendlyQuery正式发布
2007-09-16 01:08
295 查看
可以像写SQL语句那样来写CAML查询,点击这里免费下载。
我没有经过太大量的测试(没有覆盖到每种可能的分支),目前还处在beta版,欢迎大家试用。
如果有什么问题,可以在这里回复,或致信通向分享:feedback(at)CollaDec.com。感谢支持!
其实之前也有一些国外的人做了一些生成CAML查询的东西(毕竟CAML还是太难写了,主要问题倒不在于xml,而在于那些内部名称)
不过看了一眼之前的那个CAML Generator,本质上还是像xmlwriter那样去加那些结点,而且没有解决内部名称的问题
然后想写一个客户端去生成CAML,就像SQL Server里做视图的那样,后来觉得还是不太方便,索性打算写一个直接像SQL那样的语句去直接查询内容
其实这个东西的核心内容就是一个T-SQL语句的解析器
之前一直想不好怎么做比较方便,也参考了一些开源的解析器,帮助不是很大,这也是拖了很久的原因。
最近在做实验室的程序的时候做了类似的东西,于是借着手熟就顺手写了
主要就是借助几个数组去存那些查询字段、查询条件、排序字段、分组字段,
手写了一个状态机(懒得再去找开源状态机组件了,而且还得再带个dll,比较麻烦),标记出每个成分后面允许的内容(比如在select后面的返回字段后面,可以是一个逗号,也可以是where、order或者group),难度并不大,只要想清楚了就是个体力活。不过估计这个状态机应该还能再精简一些,等有空再分析分析吧。
另外一个比较核心的部分就是查询表达式的处理,把那种查询条件转换成xml格式的,这个其实就相当于表达式计算问题,随便找本数据结构的书上应该就有(分成两步:中缀表达式转后缀表达式、后缀表达式的计算)。
然后就是把那些列表名称、字段名称该分析的分析、该转换的转换,这个就很容易了。
下一步对这个的打算,除了找找bug、优化一下算法,可能考虑添加对跨列表、跨网站查询的支持,以及对moss中search的支持(这个可能比较麻烦)。
给个小sample:
我没有经过太大量的测试(没有覆盖到每种可能的分支),目前还处在beta版,欢迎大家试用。
如果有什么问题,可以在这里回复,或致信通向分享:feedback(at)CollaDec.com。感谢支持!
其实之前也有一些国外的人做了一些生成CAML查询的东西(毕竟CAML还是太难写了,主要问题倒不在于xml,而在于那些内部名称)
不过看了一眼之前的那个CAML Generator,本质上还是像xmlwriter那样去加那些结点,而且没有解决内部名称的问题
然后想写一个客户端去生成CAML,就像SQL Server里做视图的那样,后来觉得还是不太方便,索性打算写一个直接像SQL那样的语句去直接查询内容
其实这个东西的核心内容就是一个T-SQL语句的解析器
之前一直想不好怎么做比较方便,也参考了一些开源的解析器,帮助不是很大,这也是拖了很久的原因。
最近在做实验室的程序的时候做了类似的东西,于是借着手熟就顺手写了
主要就是借助几个数组去存那些查询字段、查询条件、排序字段、分组字段,
手写了一个状态机(懒得再去找开源状态机组件了,而且还得再带个dll,比较麻烦),标记出每个成分后面允许的内容(比如在select后面的返回字段后面,可以是一个逗号,也可以是where、order或者group),难度并不大,只要想清楚了就是个体力活。不过估计这个状态机应该还能再精简一些,等有空再分析分析吧。
另外一个比较核心的部分就是查询表达式的处理,把那种查询条件转换成xml格式的,这个其实就相当于表达式计算问题,随便找本数据结构的书上应该就有(分成两步:中缀表达式转后缀表达式、后缀表达式的计算)。
然后就是把那些列表名称、字段名称该分析的分析、该转换的转换,这个就很容易了。
下一步对这个的打算,除了找找bug、优化一下算法,可能考虑添加对跨列表、跨网站查询的支持,以及对moss中search的支持(这个可能比较麻烦)。
给个小sample:
SPWeb web = SPContext.Current.Web; string queryStr = "SELECT * FROM 通知 WHERE ID>10"; FriendlyQuery query = new FriendlyQuery(web, queryStr); query.RowLimit = 100; query.Scope = FriendlyQuery.QueryScope. AllItemsAndFolders; SPListItemCollection items = query.GetItems(); foreach(SPListItem i in items) Response.Write(i.Title + "<br/>");
相关文章推荐
- Swift 4.0 正式发布,更快更兼容更好用
- Breeze 文章管理系统 v1.0.0正式发布
- 快讯 | Java 9 正式发布,新特性解读
- 深度系统v15.4正式发布,惊艳眼球
- linuxmint12中文定制版正式发布
- Erdaicms旅游网站系统微信和手机端分销系统正式上线发布啦
- 荣之联正式发布大数据平台,这和大多数产品不太一样
- 电子商务软件nopCommerce3.80正式发布
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1 正式发布
- 再过几个月Apple Watch就要正式发布了
- Apache Kylin 1.5.3 正式发布
- 微软Sync Framework 2.0 RTW 正式发布
- 最先进的Linux内核正式发布
- Silverlight 4 Beta正式发布
- 微软Silverlight 4正式发布并提供下载
- Azure 云助手正式发布
- 宣布正式发布 Windows Azure 移动服务、网站及持续的服务创新
- WCF-002:WCF的发布-正式发布
- iReaper for web正式发布