LinqToTwitter搜索中已添加具有相同键的项目

时间:2014-10-17 02:18:51

标签: c# linq-to-twitter

我使用LinqToTwitter创建了一个返回推文列表的方法,但是在执行查询时我收到此错误消息:

“已添加具有相同键的项目。”

堆栈跟踪:

at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result()    在LinqToTwitter.TwitterQueryable 1.GetEnumerator() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1来源)

这是我的代码:

private IList<Tweet> GetTweets()
{
   TwitterContext ctx = new TwitterContext(this.CrateAuth());
   IList<Tweet> tweets = new List<Tweet>();

   var foundTweets =
   (from tweet in ctx.Status
    where tweet.Type == StatusType.Show &&
    (tweet.ID == 522564774706831362 || tweet.ID == 522922846293884929)
         select tweet).ToList();

    foreach (var tweet in foundTweets)
    {
        tweets.Add(
            new Tweet
            {
                ImageUrl = tweet.User.ProfileImageUrl,
                ScreenName = tweet.User.ScreenNameResponse,
                Text = tweet.Text,
                Date = tweet.CreatedAt
            });
    }

    return tweets;
}

2 个答案:

答案 0 :(得分:2)

我意识到我需要StatusType.Lookup而不是StatusType.Show。 我的查询应该是:

var foundTweets =
(from tweet in ctx.Status
 where tweet.Type == StatusType.Lookup &&
       tweet.TweetIDs == "522564774706831362,522922846293884929"
 select tweet).ToList();

答案 1 :(得分:1)

StatusType.Show 查询只接受一个 ID 。此外,LINQ to Twitter无法识别 || 运算符,因为属性/值对一起是&amp;&amp;&amp; ,以在底层实现中形成URL查询参数。正如您在后续回答中所提到的, StatusType.Lookup 是一种更好的方法。