数据量太大时,如何实现分页查询-CSOM

static List<ListItem> getEmployee()
{
string account = ConfigurationManager.AppSettings["account"];
string password = ConfigurationManager.AppSettings["password"];
string empUrl = ConfigurationManager.AppSettings["empUrl"];
using(ClientContext ctx=new ClientContext(empUrl)){
SecureString securepassWord = new SecureString();
foreach (char c in password.ToCharArray())
{
securepassWord.AppendChar(c);
}
ctx.Credentials = new SharePointOnlineCredentials(account, securepassWord);//针对online的验证
List<ListItem> employeeItem = new List<ListItem>();
List employee = ctx.Web.Lists.GetByTitle("llistName");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View>"
//+ "<Query><Where>"
//+ "<And>"
//+ "<IsNotNull><FieldRef Name='column1'/></IsNotNull>"
//+ "<And>"
//+ "<Eq><FieldRef Name='column2'/><Value Type='Text'>A</Value></Eq>"
//+ "<Eq><FieldRef Name='column3'/><Value Type='Text'>Y</Value></Eq>"
//+ "</And>"
//+ "</And>"
//+ "</Where></Query>"
+ "<ViewFields>"
+ "<FieldRef Name='column1'/>"
+ "<FieldRef Name='column2'/>"
+ "<FieldRef Name='column3'/>"
+ "<FieldRef Name='column4'/>"
+ "<FieldRef Name='column5'/>"
+ "</ViewFields>"
+ "<RowLimit>5000</RowLimit>"
+"</View>";
ListItemCollectionPosition position = null;
do
{
camlQuery.ListItemCollectionPosition = position; 
ListItemCollection empColl = employee.GetItems(camlQuery);
ctx.Load(empColl);
ctx.Load(empColl, items => items.Include(item => item["column1"], item => item["column2"], item => item["column3"], item => item["column4"], item => item["column5"]));
ctx.ExecuteQuery();
position = empColl.ListItemCollectionPosition;
if (empColl.Count>0)
employeeItem.AddRange(empColl.ToList());
} while (position != null); 
return employeeItem;
}
}

 

posted on 2019-02-20 11:02  赢在当下_Victor  阅读(812)  评论(0编辑  收藏  举报

导航