2012-05-08 77 views
1

我正在使用CAML查詢查詢SharePoint列表。在這裏,我在一個列表欄中使用Order by條件。有序列中有空值的機會,在這種情況下,我想使用另一列表列(例如:標題列')對列表進行排序。如何通過條件在caml查詢中添加此訂單以獲取Sharepoint列表項目。在CAML查詢中添加條件查詢

我的代碼是:

query.ViewXml = "<View><Query>"; 
query.ViewXml += "<OrderBy><FieldRef Name='" + orderBy + "'/></OrderBy>"; 

query.ViewXml += "<Where><Eq><FieldRef Name='" + fieldRef + "'/><Value Type = '" + type + "'>" + value + "</Value></Eq></Where>"; 
      query.ViewXml += "</Query></View>"; 

回答

1

您可以在排序依據截面多個字段:

"<OrderBy><FieldRef Name='" + orderBy + "'/><FieldRef Name='" + orderBySecondary + "'/></OrderBy>" 

這將等同於:按「排序依據」訂單然後通過「orderBySecondary」

+0

我的要求不是這樣的。如果'order by'列沒有任何值,那麼我必須根據'orderBySecondary'列對列表進行排序。我不願意使用兩列作爲排序列。 – Srikanth

+1

所以你的意思是說,對於一些項目,這個列將是空的,有些則不會?在這種情況下,您需要使用C#手動對其進行排序。 –

+0

由於您正在C#類中構建CAML,因此只需執行「if(orderBy == null)」,然後執行一些神奇的代碼。我的意思是,只需添加一個if區塊即可。您要創建「OrderBy」子句的行是您需要放入該塊的行。另一方面,獲得所有的項目,然後做一些linq魔術並完成,但效率並不高。 – ricardordz