Example #1
0
        /// <summary>
        /// 使用指定的查询对象查询题目句柄。
        /// </summary>
        /// <param name="query">为查询提供参数。</param>
        /// <returns>一个列表,该列表中包含了所有的查询结果。</returns>
        /// <exception cref="ArgumentNullException"/>
        /// <exception cref="ArgumentOutOfRangeException"/>
        public IList <ProblemHandle> QueryProblems(ProblemArchieveQueryParameter query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            if (query.QueryByTitle && query.Title == null)
            {
                throw new ArgumentNullException(nameof(query.Title));
            }
            if (query.QueryBySource && query.Source == null)
            {
                throw new ArgumentNullException(nameof(query.Source));
            }
            if (query.QueryByAuthor && query.Author == null)
            {
                throw new ArgumentNullException(nameof(query.Author));
            }
            if (query.Page == null)
            {
                throw new ArgumentNullException(nameof(query.Page));
            }
            if (query.Page.Page <= 0 || query.Page.EntriesPerPage <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(query.Page));
            }

            IQueryable <ProblemEntity> set = m_context.GetAllProblemEntities();

            // 根据查询参数执行相应的查询,动态维护查询基础数据集。
            if (query.QueryByTitle)
            {
                set = ProblemArchieveDataContext.QueryProblemEntitiesByTitle(set, query.Title);
            }
            if (query.QueryBySource)
            {
                set = ProblemArchieveDataContext.QueryProblemEntitiesBySource(set, query.Source);
            }
            if (query.QueryByAuthor)
            {
                set = ProblemArchieveDataContext.QueryProblemEntitiesByAuthor(set, query.Author);
            }

            // 执行分页。
            set = set.Page(query.Page.Page, query.Page.EntriesPerPage);

            List <ProblemHandle> handleList = new List <ProblemHandle>();

            foreach (ProblemEntity entity in set)
            {
                handleList.Add(ProblemHandle.FromProblemEntity(entity));
            }

            return(handleList);
        }
Example #2
0
        private ProblemArchieveDataContext m_context;       // 数据上下文

        /// <summary>
        /// 初始化 ProblemArchieveManager 类的新实例。
        /// </summary>
        private ProblemArchieveManager()
        {
            m_context = new ProblemArchieveDataContext();
        }