0

Microsoft 제공 샘플 "Process Tasks as they Finish"을보고 Azure 저장소에 해당 TPL 샘플을 적용하고 있습니다.Linq + "RangeVariables"+ TPL + DynamicTableEntity를 조합 할 때 컴파일러 오류가 발생했습니다.

내가 변수 domainData 컴파일러에서 오류를보고하는 곳 바로 아래 표시되어있는 문제 : Unknown method Select(?) of TableQuerySegment<DynamicTableEntity> (정규화 된 네임 스페이스가 제거)를

내가 또한 다음과 같은 오류가 DynamicTableEntity domainData \n\r Unknown type of variable domainData

 /// if you have the necessary references the following most likely should compile and give you same error 

      CloudStorageAccount acct = CloudStorageAccount.DevelopmentStorageAccount; 

      CloudTableClient client = acct.CreateCloudTableClient(); 
      CloudTable tableSymmetricKeys = client.GetTableReference("SymmetricKeys5"); 

      TableContinuationToken token = new TableContinuationToken() { }; 
      TableRequestOptions opt = new TableRequestOptions() { }; 
      OperationContext ctx = new OperationContext() { ClientRequestID = "ID" }; 
      CancellationToken cancelToken = new CancellationToken(); 

      List<Task> taskList = new List<Task>(); 

      var task2 = tableSymmetricKeys.CreateIfNotExistsAsync(cancelToken); 
      task2.Wait(cancelToken); 


      int depth = 3; 
      while (true) 
      { 
       Task<TableQuerySegment<DynamicTableEntity>> task3 = tableSymmetricKeys.ExecuteQuerySegmentedAsync(query, token, opt, ctx, cancelToken); 

       // Run the method 
       task3.Wait(); 

       Console.WriteLine("Records retrieved in this attempt = " + task3.Result.Count());// + " | Total records retrieved = " + state.TotalEntitiesRetrieved); 



     // HELP! This is where I'm doing something the compiler doesn't like 
     // 
       IEnumerable<Task<int>> getTrustDataQuery = 
           from domainData in task3.Result select QueryPartnerForData(domainData, "yea, search for this.", client, cancelToken); 

       // Prepare for next iteration or quit 
       if (token == null) 
       { 
        break; 
       } 
       else 
       { 
        token = task3.Result.ContinuationToken; 

        // todo: persist token token.WriteXml() 
       } 
      } 




    //.... 

    private static object QueryPartnerForData(DynamicTableEntity domainData, string p, CloudTableClient client, CancellationToken cancelToken) 
    { 
     throw new NotImplementedException(); 
    } 

답변

0

귀하의 코드는 검색어가 누락되었습니다.

TableQuery<DynamicTableEntity> query = new TableQuery<DynamicTableEntity>() 
    .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "temp")); 

나는 또한 아무것도하지 않는 방법 QueryPartnerForData을 (단순히 null을 반환)를 첨가하고, 모든 것이 잘 작동 : 코드를 테스트하기 위해 나는 다음과 같은 쿼리를 만들었습니다. 그러면 QueryPartnerForData 메소드의 문제 일 수 있습니까? 실제 오류를 찾는 가장 좋은 방법은 여기 저기에 중단 점을 설정하는 것입니다.

StackOverflowException은 종종 무한 루프에 빠지다는 것을 의미합니다. 중단 점을 몇 번 실행하고 코드가 멈춰있는 곳을 확인하십시오. QueryPartnerForData이 다른 메서드를 호출하고 다른 메서드가 QueryPartnerForData을 다시 호출 할 수 있습니까?

+0

분명히하겠다. 코드는 Linq 문을 컴파일하지 않으며 StackOverflow 주석은 예외는 아니지만 www.stackoverflow.com에 대한 참조이다. – LamonteCristo

+0

Linq 및 RangeVariable에 문제가있는 것 같습니다. DynamicTableEntity – LamonteCristo

+0

이상하게, 방금 선을 삭제하고 다시 입력하면 오류가 사라졌습니다. Control-Z와 redo는 차이점을 드러내지 않았습니다. 재밌는 IDE (또는 플러그인) 날 놀리는. – LamonteCristo

관련 문제