2014-02-24 44 views
1

我正在使用twitter在我的項目中,我需要通過狀態Id來查找推文。什麼是更好的方式來找到推特使用LINQ twitter?

這裏是我的代碼示例:

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查找推文(狀態)?

回答

1

在這種情況下,你會在2.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(); 

您收到的原因頁面不存在,因爲您的查詢是針對具有該用戶名的用戶並且該用戶不存在。以下是此查詢的文檔:

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

相關問題