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.pswp.cn/news/542823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542823.shtml
英文地址,請注明出處:http://en.pswp.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點陣式顯示屏的軟硬件系統、組成等的技術知識的粗略的介紹。以這款名為《液晶顯示器亮點壞點修復工具》…