前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SharePoint CAML In Action——Part II

SharePoint CAML In Action——Part II

作者头像
用户1161731
发布2018-01-11 13:23:57
8830
发布2018-01-11 13:23:57
举报
文章被收录于专栏:木宛城主木宛城主

在SharePoint中,相对于Linq to SharePoint而言,CAML是轻量化的。当然缺点也是显而易见的,"Hard Code"有时会让你抓狂。在实际场景中,经常会根据某些并不复杂的要求从List中取出相关的ListItemCollection,所以用Linq to SharePoint这把牛刀就显得笨拙了,往往用CAML会显得便捷多了。所以本篇博客将对CAML查询进行快速指导。

  对于List而言,我们对常见的Column进行讲解,常见的Column Type有Single Line Of Text、Multiple Lines of Text、Number、Boolean、Date and Time、Lookup、Person of Group,所以接下来将用CAML语言对这些常见的Column Type在查询时进行描述。

Single Line Of Text

Value Type

Text

Example

<Where><Eq><FieldRef Name=\"FirstName\"/><Value Type=\"Text\">Eyes</Value></Eq></Where>

Notes

这是一个最简单查询,查询将会返回当FirstName等于Eyes时所匹配的所有的ListItems

Multiple Lines of Text

Value Type

Text

Example

<Where><Contains><FieldRef Name=\"Description\"/><Value Type=\"Text\">Scrum</Value></Contains></Where>

Notes

这是一个最简单查询,查询将会返回当Description包含Scrum时所匹配的所有的ListItems

Person or Group(By Name)

Value Type

Text

Example

<Where><Eq><FieldRef Name=\"Editor\"/><Value Type=\"Text\">Tom</Value></Eq></Where>

Notes

这个CAML查询Modified By为 Eyes的所有ListItems,如果AD中所有的Employees的DisplayName=Tom的人员有多个, 那么则将返回多个符合条件的结果。

Person or Group(By ID)

Value Type

Integer

Example

<Where><Eq><FieldRef Name=\"Editor\" LookupId="\TRUE\"/><Value Type=\"Integer\"><UserID/></Value></Eq></Where> Or <Where><Eq><FieldRef Name=\"Editor\" LookupId="\TRUE\"/><Value Type=\"Integer\">5</Value></Eq></Where>

Notes

当添加了LookupId="TRUE"到<FieldRef/>并且将<UserID/>作为Value,这个查询将基于当前用户ID进行查询过滤, 当然也可以手动指定ID来替换<UserID/>(e.g.<Value Type="Interge">5</Value>,即指定了一个ID为5的Person)。 因为ID是唯一的,所以这个查询确保了条件的唯一(只有一个User是Valid Value)

Lookup(By Text)

Value Type

Lookup

Example

<Where><Contains><FieldRef Name=\"Specialization\" /><Value Type=\"Lookup\">SharePoint</Value></Contains></Where>

Notes

通过Text的值去过滤,有可能DisplayName相同,所以以Text值当条件可能或造成查询条件不唯一.

Lookup(By ID)

Value Type

Lookup

Example

<Where><Eq><FieldRef Name=\"Specialization\" LookupId="\TRUE\"/><Value Type=\"Lookup\">5</Value></Eq></Where>

Notes

当添加了LookupId="TRUE"到<FieldRef/>,这个查询将基于Lookup的ID而不是Text值去过滤筛选, ID是唯一的,所以这个查询将确保了查询条件的唯一性。

Date(Day only)

Value Type

Date Or DateTime

Example

<Where><Gt><FieldRef Name=\"EntryTime\" /><Value Type=\"DateTime\">2008-01-01</Value></Gt></Where> Or <Where><Gt><FieldRef Name=\"EntryTime\" /><Value Type=\"DateTime\"><Today/></Value></Gt></Where>

Notes

这个类型的查询Value Type设置了DateTime或者Date即可,但需要注意的是Value格式为(yyyy-mm-dd)。 当然Value也可以是<Today/>即代表当天(你也可以offset 当前天,比如:<Today OffsetDays="-7"/>)

Boolean

Value Type

Interge Or Boolean Or Bool

Example

<Where><Eq><FieldRef Name=\"IsMale\"/><Value Type=\"Interge\">1</Value></Eq></Where> Or <Where><Eq><FieldRef Name=\"IsMale\"/><Value Type=\"Boolean\">1</Value></Eq></Where> Or <Where><Eq><FieldRef Name=\"IsMale\"/><Value Type=\"Bool\">TRUE</Value></Eq></Where>

Notes

这儿列举了当Field类型为Boolean时的Value Type的多种可能性。值得注意的是 : <Where><Eq><FieldRef Name=\"IsMale\"/><Value Type=\"Boolean\">TRUE</Value></Eq></Where>", 这种写法是不妥的,即使Boolean=True,但返回的结果还是Boolean=False时的结果。

总结

这篇相对于上一篇而言,没有具体的分析怎样结合CAML进行查询,而是一篇对CAML语法的一个快速导读。意在帮助Developer快速查询Field对应的Value Type。 参考文章:http://joshmccarty.com/2012/06/a-caml-query-quick-reference/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Single Line Of Text
  • Multiple Lines of Text
  • Person or Group(By Name)
  • Person or Group(By ID)
  • Lookup(By Text)
  • Lookup(By ID)
  • Date(Day only)
  • Boolean
  • 总结
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档