SharePoint クライアント オブジェクト モデルを使用して、SharePoint 2013 リストからデータを取得しています。次のコードは機能し、正しくソートされた keyCol List フィールドからすべての値を取得します。
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();
ただし、フィールド内の一意の値ごとに 1 つのアイテムだけを取得したいと思います。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()' はサポートされていません。
これは、SharePoint 側の Linq プロバイダーがその式をサポートしていないということでしょうか? 私は何か間違ったことをしていますか?ありがとう。