1

我在我的项目中使用 twitter,我需要按状态 ID 查找推文。

这是我的代码示例:

private Status GetStatusById(string Id, TwitterContext ctx)
{
    ulong longId = Convert.ToUInt64(Id);
    var response = ctx.Status.Where(t => t.Type == StatusType.User &&
                                        t.ID == Id).ToList();
    return response.FirstOrDefault(s => s.ID == Id);
}

执行此方法后,我有一个异常:

LinqToTwitter.TwitterQueryException:抱歉,该页面不存在

我敢肯定这条推文真的存在!

所以我在查询结果中没有我的推文,我需要做更多的查询,直到我找到它。但我只想通过一个查询来做到这一点!

我正在使用这样的搜索代码

ulong longId = Convert.ToUInt64(Id);
var searchResults =
                (from search in ctx.Search
                 where search.Type == SearchType.Search &&
                 search.MaxID <= longId &&
                 search.SinceID >= longId
                 select search)
                .SingleOrDefault();
return searchResults.Statuses.FirstOrDefault(s => s.ID == Id);

但是这个查询需要搜索文本,而我没有!

我错过了什么吗?

有没有办法仅使用 ONE 查询通过 ID 查找推文(状态)?

4

1 回答 1

1

在这种情况下,您将使用状态/显示查询,如 v2.1 中的这样:

        var friendTweets =
            from tweet in twitterCtx.Status
            where tweet.Type == StatusType.Show &&
                  tweet.ID == Id
            select tweet;

或者在 v3.0 中:

        var friendTweets =
            await
            (from tweet in twitterCtx.Status
             where tweet.Type == StatusType.Show &&
                   tweet.ID == Id
             select tweet)
            .FirstOrDefaultAsync();

您收到主页的原因不存在,因为您的查询是针对具有该 ID 的用户而该用户不存在。这是此查询的文档:

http://linqtotwitter.codeplex.com/wikipage?title=Querying%20Statuses&referringTitle=Making%20Status%20Queries%20and%20Calls

于 2014-02-24T15:32:04.160 回答