【发布时间】:2019-03-20 13:53:38
【问题描述】:
我有两个 DbSet:
public DbSet<Reports.Models.Application> Application { get; set; }
public DbSet<Reports.Models.Category> Category { get; set; }
在控制器中,我创建了两个List<SelectListItem>s:
var applications = _context.Application
.Select(listItem => new SelectListItem
{
Value = listItem.ID,
Text = listItem.Name
}
).ToList();
var categories = _context.Category
.Select(listItem => new SelectListItem
{
Value = listItem.ID,
Text = listItem.Name
}
).ToList();
我想将它重构为一个单独的私有方法:
private List<SelectListItem> SelectList<T>(bool blankListItem = false)
{
var selectListItems = _context.<T> <------ doesn't compile
.Select(listItem => new SelectListItem
{
Value = listItem.ID,
Text = listItem.Name
}
).ToList();
if (blankListItem)
selectListItems.Insert(0, (new SelectListItem { Text = $"Choose {{T.ToString}}", Value = "" }));
return selectListItems;
}
然后调用两次:
var applications = SelectList<Application>();
var categories = SelectList<Category>();
或
var applications = SelectList<Application>(true); // add "choose"
var categories = SelectList<Category>(true); // add "choose"
定义_context.<T> 部分的正确方法是什么?也许这应该是DbSet 的扩展方法?
【问题讨论】:
标签: c# asp.net-core-mvc asp.net-core-2.2