文章内容
2017/5/31 14:27:35,作 者: 黄兵
代码封装实例
最近在写代码遇到一个需要封装的地方,否则会产生很多重复的代码,先来贴一下代码,如下:
//GET:News/Listpublic ActionResult List(QueryOptions queryOptions,int? FirstId, int? SecondId){var start = QueryOptionsCalculator.CalculateStart(queryOptions);using (UnitOfWork uow = new UnitOfWork()){if (FirstId == null && SecondId == null){var list = uow.ArticleRepository.GetAll();GetItem(list, start, queryOptions);}else if (FirstId != null && SecondId == null){var list = uow.ArticleRepository.GetAll().Where(x => x.FirstProject == FirstId);GetItem(list, start, queryOptions);}else if (FirstId == null && SecondId != null){var list = uow.ArticleRepository.GetAll().Where(x => x.SecondProject == SecondId);GetItem(list, start, queryOptions);}else if (FirstId != null && SecondId != null){var list = uow.ArticleRepository.GetAll().Where(x => x.FirstProject == FirstId).Where(x => x.SecondProject == SecondId);GetItem(list, start, queryOptions);}}return View();}
封装后的代码如下:
private void GetItem(IQueryable<Article> list,int start, QueryOptions queryOptions){var NewsList = list.Select(x => new BlogAddArticleViewModel{BlogsId = x.Id,Title = x.Title,Body = x.ArticleBody,ImgUrl = x.ImgUrl,CreationTime = x.CreateTime}).OrderBy(x => x.CreationTime).Skip(start).Take(queryOptions.PageSize).ToList();//总页数queryOptions.TotalPages = QueryOptionsCalculator.CalculateTotalPages(list.Count(), queryOptions.PageSize);ViewBag.QueryOptions = queryOptions;ViewBag.NewsList = NewsList;}
之所以采用 void 是因为:为不返回值的方法指定返回值类型。
这样直接输出ViewBag,并不需要返回什么类型。
黄兵的个人博客原创。
转载请注明出处:黄兵的个人博客 - 代码封装实例
评论列表