使用LINQ to twitter查找推文的更好方法是什么?

时间:2014-02-24 14:31:05

标签: c# twitter linq-to-twitter

我正在我的项目中使用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);

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

我错过了什么吗?

有没有办法只使用一个查询通过ID查找推文(状态)?

1 个答案:

答案 0 :(得分: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