我使用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;
}
答案 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 是一种更好的方法。