Мне нужно извлечь данные из списка SharePoint Online в простом консольном приложении (.net 4.5).
Для этого я добавил ссылку на Microsoft.SharePoint.Client
и Microsoft.SharePoint.Client.Runtime
.
Следующее делает то, что мне нужно ...
ClientContext ctx = new ClientContext(siteUrl);
ctx.Credentials = new SharePointOnlineCredentials(siteUser, securePass);
Web site = ctx.Web;
ctx.Load(site);
List lst = site.Lists.GetByTitle("SomeList");
CamlQuery query = new CamlQuery();
query.ViewXml = @"<View>
<ViewFields>
<FieldRef Name='Title' />
</ViewFields>
</View>";
ListItemCollection items = lst.GetItems(query);
ctx.Load(items);
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine(item["Title"]);
}
Теперь мне нужен более сложный запрос с Query
и RowLimit
. В этом более сложном CamlQuery
, RowLimit
, кажется, игнорируется.
<View>
<RowLimit>1000</RowLimit>
<ViewFields>
<FieldRef Name='Title' />
<FieldRef Name='ProductName' />
<FieldRef Name='GroupName' />
</ViewFields>
<Query>
<Where>
<Neq>
<FieldRef Name='GroupName' />
<Value Type='Lookup'></Value>
</Neq>
</Where>
</Query>
</View>
Я не могу заставить работать RowLimit. Все примеры, с которыми я сталкиваюсь, используют SPContext, который может устанавливать RowLimit для объекта SPQuery.
Для работы SPContext требуется большая DLL-библиотека SharePoint, в то время как ClientContext уже присутствует в Visual Studio (с использованием 2015 г.) и имеет гораздо меньшие библиотеки DLL.
So..
1. Когда мне следует использовать SPContext?
2. Есть ли причина, по которой RowLimit не работает в указанном выше CamlQuery?
Редактировать 13/08 13:15
Проблема, похоже, не в RowLimit, а в самом запросе.
<Neq>
<FieldRef Name='GroupName' />
<Value Type='Lookup'></Value>
</Neq>
Кажется, это не работает ...