linqtotwitter 获取没有视频的推文

linqtotwitter get tweets without video

我正在尝试通过将 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个集合,其中每个mediaEntityvideoInfo属性. 但是要为像 statuses 集合这样的复杂结构编写正确的 linq 查询有些困难。

我认为您只需要熟悉 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.