我正在尝试使用linqtotwitter和c#来获取推文,并且有一项任务是在没有视频内容的情况下获得10条最后的推文。 首先,我检索了这样的最后10个状态:
var srch = Enumerable.SingleOrDefault((from search in
twitterContext.Search
where search.Type == SearchType.Search &&
search.Query == hashTag &&
search.Count == 10
select search));
其次我试图排除包含视频内容的推文:
var result = srch.Statuses.ToList()
.Where(item => item.Entities.MediaEntities.
Where(innerItems => innerItems.VideoInfo.Duration == 0)); // shows error
status
包含entities
个集合,其中每个entity
包含mediaentities
个集合,其中每个mediaEntity
都有videoInfo
个属性。
但是对于像statuses
集合这样的复杂结构,正确的linq查询存在一些困难。
答案 0 :(得分:1)
我认为你只需要熟悉linq。尽管如此,您可能正在寻找:
var srch = twitterContext.Search
.FirstOrDefault(search =>
search.Type == SearchType.Search &&
search.Query == hashTag);
var srchWithoutVideo = srch?.Statuses?.Where(status =>
status.Entities.MediaEntities.All(entity => entity.VideoInfo.Duration == 0))
.OrderByDescending(status => status.CreatedAt)
.Take(10);
我猜测你的预期结果 - 将计数移出搜索范围。我想你可能首先想要所有推文都是hashTag,然后在第二个查询中你可以过滤,按CreatedAt Descending排序并取10。