private List<Domain.Model.Account> QueryAccountsFromCache(List<string> Ids) { return (from x in this.accountCache where Ids.Contains(x.Key) select (Domain.Model.Account)x.Value).ToList(); }
private List<ITweet> GetTweets(string screenname, bool includeRelevantScreenNames, List<ulong> excludeStatusIDs = null) { List<string> screenNames = null; var user = UsersCollection.Single(screenname); if (includeRelevantScreenNames) screenNames = GetRelevantScreenNames(screenname); else screenNames = new List<string> { screenname.ToLower() }; int RetweetThreshold = UsersCollection.PrimaryUser().RetweetThreshold; Expression<Func<Tweet, bool>> where = t => //If there are any IDs we want to filter out (excludeStatusIDs == null || !excludeStatusIDs.Contains(t.StatusID)) && //Should everything be displayed or do you only want content (user.OnlyTweetsWithLinks == false || (t.Links != null && t.Links.Count > 0)) && //Minumum threshold applied so we get results worth seeing (if it is your own tweet it gets a pass on this step) ((t.RetweetCount >= RetweetThreshold /*&& t.CreatedAt > DateTime.Now.AddHours(-48)*/) || t.User.Identifier.ScreenName.ToLower() == screenname.ToLower()); var tweets = screenNames //For each screen name (i.e. - you and your friends if included) select the most recent tweets .SelectMany(x => Repository<Tweet>.Instance.Query(x + TWEETS, limit: Repository<Tweet>.Limit.Limit100, where: where) ?? new List<Tweet>()) //Order all tweets based on rank .OrderByDescending(t => t.TweetRank) .Distinct(Tweet.GetTweetTextComparer()) .ToList(); if(!string.IsNullOrEmpty(UsersCollection.PrimaryUser().Track)) tweets.AddRange(Repository<Tweet>.Instance.Query(TRACKER + TWEETS, limit: Repository<Tweet>.Limit.Limit1000, where: where) ?? new List<Tweet>()); return tweets.Cast<ITweet>().ToList(); }