我试图在C#应用程序中多次调用Sharepoint API,并将返回的结果存储到List
中,如下所示
private async Task<List<sDTO.RootObject>> getfromSharepoint()
{
List<SharepointDTO.RootObject> returnObj = new List<SharepointDTO.RootObject>();
var result = new UpdateCoreStrains.SharepointDTO.RootObject();
......
// Calling GET Sharepoint Site
try
{
for (int i = 0; i < 10000; i = i + 5000)
{
SP_StrainCodes = "GetByTitle('S%20Codes')/items?$skiptoken=Paged=TRUE%26p_ID=" + i + "&$top=1";
core_URL = BaseURL_SP + SP_StrainCodes;
var response = client_sharePoint.GetAsync(core_URL).Result;
var responsedata = await response.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<sDTO.RootObject>(responsedata);
if (result.d.Next == null)
continue;
}
returnObj.Add(result);
}
return returnObj;
}
现在我要在其他函数中调用getfromSharepoint(),并且要遍历List来验证数据
public List<numberList> getListFromSharepoint()
{
List<umberList> nums = new List<numberList>();
try
{
Task<List<sDTO.RootObject>> sharepointList = getfromSharepoint();
foreach(sDTO retSharepointobj in sharepointList)
{
if (retSharepointobj == null ||
retSharepointobj.Id == 0 ||
retSharepointobj.Result.
retSharepointobj.Result == null ||
retSharepointobj.Result.d == null ||
retSharepointobj.Result.d.results == null ||
retSharepointobj.Result.d.results.Count == 0
)
{
return nums; // count = 0, return an empty list
}
但是我收到类似
的错误 foreach statement cannot operate on variables of type 'Task<List<SharepointDTO.RootObject>>' because 'Task<List<SharepointDTO.RootObject>>' does not contain a public definition for 'GetEnumerator'
如何遍历>
答案 0 :(得分:1)
尝试将getListFromSharepoint
方法设置为async
。
public async Task<List<numberList>> getListFromSharepoint()
{
List<umberList> nums = new List<numberList>();
try
{
//Here we use an await to get result from getfromSharepoint() method call.
List<sDTO.RootObject> sharepointList = await getfromSharepoint();
foreach (sDTO retSharepointobj in sharepointList)
{
//your rest of code is same here
}
编辑:
从其他函数中调用getListFromSharepoint
方法为
List<numberList> result = await getListFromSharepoint();
OR
您可以简单地使用Result
中的getfromSharepoint
。
List<sDTO.RootObject> sharepointList = await getfromSharepoint().Result;
答案 1 :(得分:0)
Ths:Task<List<sDTO.RootObject>> sharepointList = getfromSharepoint();
正在调用async
方法,该方法不会立即返回。您的代码应如下所示:
List<sDTO.RootObject> sharepointList = getfromSharepoint().Result;
答案 2 :(得分:0)
此处您要遍历sharepointList
类型为Task
的项目,该项目不包含“ GetEnumerator”的公共定义(如错误消息所述)。但是您可以迭代Task的结果,因为Task的结果为RootObject
的集合。如果您要遍历List<sDTO.RootObject>
中的sharepointList
,则应使用:
foreach (sDTO.RootObject retSharepointobj in sharepointList.Result)
{
// here each retSharepointobj of type RootObject
// code here
}