Я использую клиентскую объектную модель SharePoint для извлечения данных из списка SharePoint 2013. Следующий код работает и получает все значения из поля списка keyCol, правильно отсортированные:
string keyCol = "SPFieldName";
CamlQuery keyColumnValuesQuery = CamlQuery.CreateAllItemsQuery();
ListItemCollection keyColumnValues = srcDocLib.GetItems(keyColumnValuesQuery);
spContext.Load(keyColumnValues, items => items.Include(item => item[keyCol]), items => items.OrderBy(item => item[keyCol]));
spContext.ExecuteQuery();
Однако я хотел бы получить только один элемент для каждого уникального значения в поле, отличительного. Когда я добавляю Distinct() Linq/Lambda в аргумент извлечения метода Load (нет проблем со временем компиляции):
spContext.Load(keyColumnValues, items => items.Include(item => item[keyCol]), items => items.OrderBy(item => item[keyCol]), items => items.Distinct());
Я получаю InvalidQueryExpressionException: выражение запроса 'items.Distinct()' не поддерживается.
Означает ли это, что поставщик Linq на стороне SharePoint не поддерживает это выражение, и мне просто не повезло с использованием этой техники? Я что-то делаю неправильно? Спасибо.