1

我正在尝试使用 Linq To Twitter 最新版本 3.0.2 获取关注者。但它没有返回任何响应,也没有抛出任何错误。请建议

 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;
                }

            }
4

1 回答 1

1

首先从 Twitter 获取关注者:

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

然后,您可以使用 LINQ to Objects 查询对结果进行自定义投影。

更新:

您应该等待对 GetTwitterFollowers 的调用,如下所示:

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

然后,您不需要 ContinueWith。它不起作用,因为 GetTwitterFollowers 在等待之后立即返回。ContinueWith lambda 可能会执行,但没有任何东西阻止例程返回,并且您不会得到 lambda 执行的结果。花一点时间查看 async/await 可能会有所帮助,以使这更容易。这可能会有所帮助:

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

于 2014-03-04T22:22:55.647 回答