文章内容

2017/5/31 14:27:35,作 者: 黄兵

代码封装实例

最近在写代码遇到一个需要封装的地方,否则会产生很多重复的代码,先来贴一下代码,如下:

//GET:News/List
public 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,并不需要返回什么类型。

黄兵的个人博客原创。

转载请注明出处:黄兵的个人博客 - 代码封装实例

分享到:

发表评论

评论列表