linqtotwitter得到没有视频的推文

时间:2017-10-29 18:42:53

标签: c# linq-to-twitter

我正在尝试使用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查询存在一些困难。

1 个答案:

答案 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。