我有一个如下所示的linq代码
itemCol.Where(x => Convert.ToString(x[internalColumn]) == filter)
.Select(x => x[internalColumn].ToString())
.Distinct()
.ToList();
itemCol
是托管CSOM(ListItemCollection)中的Sharepoint List Item集合。我收到的错误如“不支持指定的方法”。
堆栈跟踪
at Microsoft.SharePoint.Client.ClientQueryable'1.GetEnumerator()
在System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
at System.Linq.Enumerable.ToList [TSource](IEnumerable'1 source)
此问题仅在客户端计算机上发生,而不是在任何开发计算机中发生。
答案 0 :(得分:0)
我有类似的问题
不支持指定的方法stacktrace:Microsoft.SharePoint.Client.ClientQueryable`1.GetEnumerator()(...)
我已经编写了这段代码,它可以在Windows Server环境中运行,但在我的Windows 10计算机上却没有:
SP.ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem, (....)
clientContext.ExecuteQuery();
var outlist = (collListItem
.Select(item => new MyClass()
{
ID = Convert.ToInt32(item["ID"])
}) as IEnumerable<MyClass>)
.ToList();
return outlist;
我已经决定将解析集合添加到列表中,然后选择如下:
SP.ListItemCollection collListItem = oList.GetItems(camlQuery);
clientContext.Load(collListItem, (....)
clientContext.ExecuteQuery();
var outlist = (collListItem.ToList()
.Select(item => new MyClass()
{
ID = Convert.ToInt32(item["ID"])
}) as IEnumerable<MyClass>)
.ToList();
return outlist;
我发现它here
答案 1 :(得分:0)
请参见Stephen Turner's answer。正如他写道:
之所以引起此问题,是因为Sharepoint集合类型不支持全部Linq表达式。为了解决这个问题,将其从Sharepoint集合转换为具有另一个
.ToList()
的通用列表,如下所示。
尝试:
itemCol.ToList()
.Where(x => Convert.ToString(x[internalColumn]) == filter)
.Select(x => x[internalColumn].ToString())
.Distinct()
.ToList();