2014-03-04 26 views
1

我想獲取追隨者使用Linq到Twitter最新版本3.0.2..But它沒有返回任何迴應,要麼不拋出任何錯誤。請建議提取追隨者時沒有得到任何迴應或錯誤Linq To Twitter

var followers = GetTwitterFollowers 
      (twitterUserId, auth, maxFollowers); 

     var foll = followers.ContinueWith(f => 
              { 
               return f.Result; 
              }).Result; 

「GetTwitterFollowers」 的方法定義爲:

private static async Task<List<TwitterData>> GetTwitterFollowers(
      ulong twitterUserId, SingleUserAuthorizer auth, int? maxFollowers) 
      { 

       var follower = maxFollowers ?? 15000; 

       try 
       { 
        var twitterCtx = new TwitterContext(auth); 
        var followers = await twitterCtx.Friendship 
               .Where(f => f.Type == FriendshipType.FollowersList 
                && f.UserID == twitterUserId.ToString()) 
               .Select(f => new TwitterData() 
               { 

                Followers = f.Users.Where(t => !t.Protected).Take(follower).Select(s => s).ToList() 
               }).SingleOrDefaultAsync(); 
        return GetFollowersList(followers.Followers); 
       } 
       catch (Exception ex) 
       { 
        return null; 
       } 

      } 

回答

1

獲得追隨者的Twitter第一:

 var friendship = 
      await 
      (from friend in twitterCtx.Friendship 
      where friend.Type == FriendshipType.FollowersList && 
        friend.UserID == twitterUserId.ToString() 
      select friend) 
      .SingleOrDefaultAsync(); 

然後你可以用LINQ做您的自定義投影到對象上查詢結果。

更新:

你應該等待調用GetTwitterFollowers,像這樣:

var followers = await GetTwitterFollowersAsync(twitterUserId, auth, maxFollowers); 

然後,你不需要ContinueWith。它不起作用,因爲GetTwitterFollowers在等待之後立即返回。 ContinueWith lambda可能會執行,但是沒有任何東西可以保持該例程不返回,並且您不會得到lambda執行的結果。這可能會有助於花費一點時間尋找異步/等待來簡化操作。這裏的東西,可能會幫助:

http://msdn.microsoft.com/en-us/library/hh191443.aspx

+0

問題是,我沒有得到任何迴應了。它只是繼續執行,我沒有得到任何結果或錯誤。 – user2866746

+0

我想在響應時返回公共方法的結果。這就是爲什麼我使用傻瓜.ContinueWith(...)..我在這一點上做錯了什麼?因爲如果我不使用它,它會返回給調用者而沒有結果。 – user2866746

+0

我又看了一遍,用我認爲是你的問題的原因更新了這個。 –

相關問題