如何从SharePoint CSOM查询中获取唯一字段值?

用户名

我正在使用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();

但是,我只想为字段中的每个唯一值检索一个项,即唯一项。当我将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提供程序不支持该表达式,而我对使用这种技术感到不满意?我做错了什么吗?谢谢。

瓦迪姆·格雷米亚切夫(Vadim Gremyachev)

用于SharePoint的Linq提供程序不支持Distinct运算符。

根据MSDN:

某些LINQ查询无法完全转换为CAML。但是,这些查询原则上可以正确运行,因为它们可以分两个阶段执行。首先,LINQ to SharePoint提供程序将尽可能多的查询转换为CAML并执行该查询

有关更多详细信息,请参考不支持的LINQ查询和两阶段查询

两阶段方法

要更正此错误,您应该将查询分为两个阶段,以强制第一个查询先于第二个查询执行。为此,例如,应使用method转换IEnumerable<T>列表中的第一个ToList()

下面的示例演示如何返回唯一值:

   //1 Execute query against SP Linq provider   
    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();
    //2. Transform LiItemCollection to a List and perform Distinct operation 
    var uniqueKeyColumnValues = keyColumnValues.ToList().Select(i => i[keyCol]).Distinct(); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算文件中的唯一字段?

来自分类Dev

如何在SELECT中制作唯一字段(仅获取第一位)

来自分类Dev

如何在Jquery Ajax请求期间获取唯一字段

来自分类Dev

如何在Rails中使用ruby中的唯一字段来获得不区分大小写的唯一字段?

来自分类Dev

如何在Adonis JS中更新唯一字段

来自分类Dev

出现唯一字段错误时如何在Django中更新数据

来自分类Dev

如何基于codeigniter中的唯一字段更新特定记录?

来自分类Dev

如何计算每行列数奇数的csv文件中唯一字段的数量

来自分类Dev

如何在MongoDB中多次使用同一字段在NodeJS中查找查询

来自分类Dev

如何计算所选列在查询结果中有多少个唯一字段

来自分类Dev

如何计算所选列在查询结果中有多少个唯一字段

来自分类Dev

PostgreSQL:如何在同一字段中替换不同的值?

来自分类Dev

如何交叉汇总同一字段中的摘要值

来自分类Dev

PostgreSQL:如何在同一字段中替换不同的值?

来自分类Dev

如何使用codeigniter在同一字段中搜索2个值?

来自分类Dev

如何用PHP在MySql中标识具有所有唯一字段值的行?

来自分类Dev

如何在Laravel 4中添加组合的唯一字段验证器规则

来自分类Dev

如何使用xslt合并基于唯一字段的单个xml元素中的重复xml元素

来自分类Dev

如何在不丢失Excel中唯一字段的情况下合并订单项?

来自分类Dev

如何选择按不同字段排序的唯一字段?

来自分类Dev

如何查询字段中有特定代码的选择名称,同时在同一字段中没有代码

来自分类Dev

在Laravel中使用Http \ Request更新唯一字段时如何执行验证

来自分类Dev

如何将具有唯一字段的对象添加到Set

来自分类Dev

如何计算在熊猫中共享唯一字段的行

来自分类Dev

如何将具有唯一字段的对象添加到Set

来自分类Dev

如何使用不唯一字段按最大日期分组

来自分类Dev

如何从与一对一字段相关的两个模型中获取所有对象的列表

来自分类Dev

如何在同一字段中先按数字排序然后按字符串排序查询

来自分类Dev

如何检查表User中唯一字段上的Username字段(Yii2中当前用户的用户名除外)

Related 相关文章

  1. 1

    如何计算文件中的唯一字段?

  2. 2

    如何在SELECT中制作唯一字段(仅获取第一位)

  3. 3

    如何在Jquery Ajax请求期间获取唯一字段

  4. 4

    如何在Rails中使用ruby中的唯一字段来获得不区分大小写的唯一字段?

  5. 5

    如何在Adonis JS中更新唯一字段

  6. 6

    出现唯一字段错误时如何在Django中更新数据

  7. 7

    如何基于codeigniter中的唯一字段更新特定记录?

  8. 8

    如何计算每行列数奇数的csv文件中唯一字段的数量

  9. 9

    如何在MongoDB中多次使用同一字段在NodeJS中查找查询

  10. 10

    如何计算所选列在查询结果中有多少个唯一字段

  11. 11

    如何计算所选列在查询结果中有多少个唯一字段

  12. 12

    PostgreSQL:如何在同一字段中替换不同的值?

  13. 13

    如何交叉汇总同一字段中的摘要值

  14. 14

    PostgreSQL:如何在同一字段中替换不同的值?

  15. 15

    如何使用codeigniter在同一字段中搜索2个值?

  16. 16

    如何用PHP在MySql中标识具有所有唯一字段值的行?

  17. 17

    如何在Laravel 4中添加组合的唯一字段验证器规则

  18. 18

    如何使用xslt合并基于唯一字段的单个xml元素中的重复xml元素

  19. 19

    如何在不丢失Excel中唯一字段的情况下合并订单项?

  20. 20

    如何选择按不同字段排序的唯一字段?

  21. 21

    如何查询字段中有特定代码的选择名称,同时在同一字段中没有代码

  22. 22

    在Laravel中使用Http \ Request更新唯一字段时如何执行验证

  23. 23

    如何将具有唯一字段的对象添加到Set

  24. 24

    如何计算在熊猫中共享唯一字段的行

  25. 25

    如何将具有唯一字段的对象添加到Set

  26. 26

    如何使用不唯一字段按最大日期分组

  27. 27

    如何从与一对一字段相关的两个模型中获取所有对象的列表

  28. 28

    如何在同一字段中先按数字排序然后按字符串排序查询

  29. 29

    如何检查表User中唯一字段上的Username字段(Yii2中当前用户的用户名除外)

热门标签

归档