/// <summary> /// Конструктор. /// </summary> /// <param name="source">Источник.</param> /// <param name="query">Запрос.</param> /// <param name="sortPosts">Сортировать посты.</param> public FilteredPostCollection(IPostCollectionViewModel source, IPostCollectionSearchQuery query, bool sortPosts = true) { if (source == null) throw new ArgumentNullException(nameof(source)); if (query == null) throw new ArgumentNullException(nameof(query)); Source = source; Query = query; MergeAndSortPosts = sortPosts; Source.PostsUpdated += SourceOnPostsUpdated; SetPosts(); }
/// <summary> /// Получить отфильтрованный список постов. /// </summary> /// <param name="src">Список постов.</param> /// <param name="query">Запрос.</param> /// <param name="sortPosts">Сортировать посты.</param> /// <returns>Результат.</returns> public static IFilteredPostCollection FilterPosts(this IPostCollectionViewModel src, IPostCollectionSearchQuery query, bool sortPosts = true) { return new FilteredPostCollection(src, query, sortPosts); }
/// <summary> /// Найти пост. /// </summary> /// <param name="src">Спиок постов.</param> /// <param name="query">Запрос.</param> /// <returns>Результат.</returns> public static IPostViewModel FindPost(this IPostCollectionViewModel src, IPostCollectionSearchQuery query) { return src.Posts.FirstOrDefault(query.Filter); }