SharePoint CAML In Action——Part I

阅读目录

  • CAML In Action
  • 接下来

 

在SharePoint中,我们经常要对List进行操作,比如要从List中取出相应的ListItem,利用CAML是个好办法。在没了解CAML之前,我是这样取数据的:

MyList.Items.Cast<SPListItem>().ToList().Where(Condition).Select(Fields);

原谅我当初如此放荡不羁的写法吧。

  • 好了,现在进入CAML实战中,首先CAML (Collaborative Application Markup Language)基于XML的一种语言。所以你写CAML时一定要注意Tag是否闭合,另外CAML也是区分大小写的。

正巧在看蝙蝠侠,可以将SPList对象可以看成是银行,SPListItem对象可那么以看成银行库里一排排保险柜,SPListItem的Fields就代表每一个保险柜中的存放的财富(比如黄金、钻石、美元)。所以可以把CAML比作型号各式的子弹的话,那SharePoint SPQuery对象就是蝙蝠侠中的小丑,在抢银行之前必须把子弹上膛,对,SPQuery对象的Query属性就是一把可以匹配任何子弹万能武器,ViewFields就是你要抢的财富类型(黄金、钻石、美元),RowLimit就是抢得一定数量的财富就跑路了,而返回的SPListItemCollection集合就是抢到的财富。

是不是感到很晕,没事,先有个概念即可。我以一个简单入门的例子,你就会明白了,当然我的比喻也是即兴发挥的,有不妥也别见怪。

回到顶部

CAML In Action

首先我准备两个List,一个Employee,一个Specialization,为我们提供测试数据,其中Employee中的Specialization列是查阅项类型,引用了Specialization List的数据。

  • Employee

  • Specializaion

现在如果想在Employee List中取出Specialization包括CSS,并且Age大于20岁,并且还是女性的Employees

这时你脑海中的逻辑表达式为:Specialization=CSS And Age>20 And IsMale=False。

接着你需要把上述的逻辑表达式转换为CAML语言,如下:

任何给定的And元素只能有2个结合体,即只能由2个字元素,如果需要结合3个或者更多的And条件,则必须以一个条件的形式嵌套在父And中,依次类推下去。

  • 当查询时,免不了要对结果进行排序等,这时OrderBy就可用上,比如我要对上述结果进行以Age降序形式排序,则CAML:
<OrderBy><FieldRef Name='Age' Ascending ='False'/>
</OrderBy>  
  • 所以完整的查询部分CAML如下:
复制代码
 <Where> <And><And><Eq><FieldRef Name='Specialization'/><Value Type='Lookup'>CSS</Value></Eq> <Gt><FieldRef Name='Age'/><Value Type='Number'>20</Value></Gt></And><Eq><FieldRef Name='IsMale'/><Value Type='Integer'>0</Value></Eq></And></Where><OrderBy><FieldRef Name='Age' Ascending ='False'/></OrderBy> 
复制代码
  • 当然,你可以指定从查询中返回的Fields,SPQuery对象的ViewFields属性就是代表从查询中返回的Fields:
query.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='Age'/>";
  • 当数据量过多时,也可以限制返回的行数:
query.RowLimit = 1000;
  • 所以完整的利用CAML进行查询的代码如下:
复制代码
   SPList spList = spWeb.Lists.TryGetList("Employee");if (spList != null){SPQuery query = new SPQuery();query.Query = @"  <Where> <And><And><Eq><FieldRef Name='Specialization'/><Value Type='Lookup'>CSS</Value></Eq> <Gt><FieldRef Name='Age'/><Value Type='Number'>20</Value></Gt></And><Eq><FieldRef Name='IsMale'/><Value Type='Integer'>0</Value></Eq></And></Where><OrderBy><FieldRef Name='Age' Ascending ='False'/></OrderBy> ";
                     query.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='Age'/>";query.RowLimit = 10;var listItemsColl = spList.GetItems(query);
复制代码

 

  • 最后感兴趣的朋友可以通过调试看一下最终生成的CAML:以View开头,而我们写的查询条件被包含在Query节点下:

回到顶部

接下来

这篇博客没有过多的去讲什么是CAML以及CAML的查询元素,而是以一个Example展示了如何用CAML从List中获取相应的ListItemCollection,接下来的一篇博客会对CAML语法进行一个快速参考。

 

88x31.png
本博客为木宛城主原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名木宛城主(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
分类: SharePoint In Action
标签: SharePoint, SharePoint 2013

本文转自木宛城主博客园博客,原文链接:http://www.cnblogs.com/OceanEyes/p/sharepoint-caml-in-action-one.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

地图统计_博客 城市访问量统计并且通过Echarts+百度地图展示

本篇讲解一下 如何在Vue 中使用 Echarts 百度地图 统计 博客访问量 并且通过QQWry 解析 ip 地址 利用Echarts 展示出来效果图如下&#xff1a;1.纯真Ip地址库 QQWry这是我在github上找的 java版本的 解析 qqwry的1.1 maven 引入 qqwry<dependency> <grou…

修改console缓存大小_更改缓存的行大小将如何影响其他参数?

修改console缓存大小Prerequisites: Memory mapping and its types 先决条件&#xff1a; 内存映射及其类型 While designing a cache system of a PC, the size of cache lines is an important parameter. 在设计PC的缓存系统时&#xff0c;缓存行的大小是重要的参数。 In …

win10必须禁用的服务_Win10系统中这3个无用的设置,奉劝你还是早点关闭吧!

在PC端所有的操作系统中&#xff0c;占据市场份额最大的莫过于微软发布的windows系统。其中最经典的莫过于XP和win7&#xff0c;无奈微软已经停更了这两个操作系统&#xff0c;所以为了电脑的安全着想&#xff0c;很多人都直接升级更新至最新版的win10系统&#xff0c;目前win1…

Android 布局练习

要求&#xff1a;使用多种布局完成以下练习。 1.要求效果 完成效果 代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <…

有危害吗_涂料漆对身体有害吗?涂料漆危害怎么预防

目前很多人都会通过涂料漆来进行墙面装饰&#xff0c;用它来对墙面进行装饰是可以马上的改善墙壁的状态&#xff0c;但有些人也担心它会对身体有害&#xff0c;涂料漆对身体有害吗?由于担心涂料漆会给健康带来危害&#xff0c;很多人都想要预防&#xff0c;那涂料漆危害怎么预…

小写大写转换_小写到大写转换器JavaScript工具| 网络应用项目

小写大写转换Hi! At times, beginners always find it hard getting the application of the theory they learn in programming or a particular language. 嗨&#xff01; 有时&#xff0c;初学者总是很​​难在编程或特定语言中应用他们学到的理论。 In this article, well…

inventor扳手制作视频_弱电工程视频监控系统施工方案,可作施工组织设计

1 工程概况 1.1 编制《工程总体实施方案》 主要包括&#xff1a;结合高清监控系统设计方案作配套的深化设计&#xff0c;编制高清监控系统实施计划&#xff0c;并提出相关的配合要求。根据总体方案&#xff0c;对高清监控系统工程的技术设计作必要的补充。并提出相关的实施技术…

python print与input

python基础语法1print()函数input()函数print()函数 不用引号&#xff0c;函数内为数字或数字运算 单引号&#xff0c;整条语句结构&#xff0c;’\n’ 双引号&#xff0c;函数结构 三引号&#xff0c;对内容进行换行输出 print("let is go")#函数结构 print(let i…

lol最克制诺手的英雄_LOL:究竟有没有完美克制诺手的英雄?时光上单或可一战?...

小伙伴们大家好&#xff0c;我是小数点。诺克萨斯之手德莱厄斯&#xff0c;他可以说是每一位上单玩家的噩梦了&#xff0c;因为喜欢玩诺手的人特别多&#xff0c;而会玩的诺手却一般都在对面。要知道诺手这样英雄拿到优势凶起来&#xff0c;你就没得打了&#xff0c;就算在塔下…

Oracle 创建表空间,用户,赋值(简装)

一&#xff0c;1.Oracle 创建表空间&#xff0c;用户&#xff0c;赋值&#xff08;简装&#xff09;C:\Documents and Settings\Administrator>sqlplus /nologSQL> conn /as sysdba2.删除用户drop user username cascade;3.创建自增表表空间SQL> create tablespace 表…

编程语言难度排名_编程语言TOP10!该如何选择适合自己的?

本文转载自公众号“读芯术”(ID&#xff1a;AI_Discovery)编程领域大约有700种代码语言。理解编程语言的重要性以及其如何影响需要执行的具体任务至关重要。一篇文章穷尽700 种语言不现实&#xff0c;也没有意义。因此&#xff0c;笔者挑选出了时下最热门的原因&#xff0c;在本…

测试私有方法 重构_一个全栈工程师重构之路:中小公司 DevOps 落地实践

为了这篇文章&#xff0c;我前后写了将近十篇文章铺垫&#xff0c;才将这篇整体重构思想引出。背景先说下背景&#xff0c;我们是一家小公司&#xff0c;虽然打着做产品的旗帜&#xff0c;但是每个客户都有大量的个性化功能&#xff0c;这里指各个客户的java端、Android端、ios…

python变量 数据类型 列表 元组 字典

python基础语法2变量数据类型与类型转换列表添加列表元素修改元素删除列表元素组织列表创建数值列表操作列表元组元组转列表字典创建字典列表取值字典删除增加修改变量 变量命名要求&#xff1a; 1.只能是一个词 2.只能包含字母、数字、下划线 3.不能用数字开头 变量定义位置不…

HDU 5777 domino

贪心一下。有k次机会&#xff0c;也就是那些数字中&#xff0c;最大的k-1可以不选择。答案为&#xff1a;sum{a[i]}-sum{最大的k-1个a[i]}n。注意&#xff1a;k>n的时候直接输出n。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio&…

puppeteer执行js_使用Node.js和Puppeteer与表单和网页进行交互– 2

puppeteer执行jsHi guys! Today lets look at another powerful function of the puppeteer API using Node.js part 2. 嗨&#xff0c;大家好&#xff01; 今天&#xff0c;让我们看看使用Node.js第2部分的puppeteer API的另一个强大功能。 In the first part of this sectio…

好用的平板电脑_小熊分享|这五款平板电脑的性价比绝了!

【叶紫网】独乐乐不如众乐乐&#xff0c;点击上方头像并添加关注&#xff0c;与叶紫科技小熊一起探索科技的奥秘。要说当代年轻人的消费观&#xff0c;我们也是说要该花花&#xff0c;该省省&#xff0c;像现在的科技产品更新换代的速度&#xff0c;就算我们的荷包相当的鼓&…

python if语句 for语句 while语句

python基础语法3if语句for循环while循环else语句退出循环if语句 执行条件判断&#xff0c;符合执行if内语句&#xff0c;否则执行elif或者else。 if、elif、else都要接冒号&#xff0c;注意缩进 各级条件互斥 后面的条件可以接列表&#xff0c;表示或关系 contribution860 if…

交际过程的两个基本环节_跨文化交际学概论笔记(二)

第二部分 基本概念&#xff1a;文化与交际第一章 文化的定义与特征一、文化的定义1. 文化的定义为何重要首先&#xff0c;在跨文化交际学中文化是一个至关重要的问题。研究时&#xff0c;不可避免进行文化对比。其次&#xff0c;在研究任何学科前&#xff0c;术语的界定是前提。…

Python中列表的del,remove和pop函数之间的区别

1)Python del函数 (1) Python del function) del is nothing but "delete". del is a keyword which basically goes on the position given by the user in del(position) and deletes that element and also changes the positions of all the other elements as i…

lcd图片转二进制工具_辽宁2.8寸LCD屏价格,测距仪LCD显示屏_思迈微

首页 > 新闻中心发布时间&#xff1a;2020-11-15 08:27:09 导读&#xff1a;思迈微为您提供辽宁寸LCD屏价格,测距仪LCD显示屏的相关知识与详情&#xff1a; 以上便是对LED点阵式显示屏的软硬件系统、组成等的技术知识的粗略的介绍。以这款名为《液晶显示器亮点坏点修复工具》…