我想在.ToDictionary()
中将category_code和category_name连接到一个 Value 。现在我只发送category_name,但我想要category_name + category_code。可能吗?
public ActionResult Create()
{
Party party = new Party();
var list = repository.GetCategories()
.Select(p => new { p.category_id, p.category_name, p.category_code })
.AsEnumerable()
.ToDictionary(m => m.category_id, m => m.category_name);
party.categories = new SelectList(list, "Key", "Value", "SelectedValue");
return View(party);
}
答案 0 :(得分:2)
为什么您使用.ToDictionary()
,AsEnumerable
,Select
使用匿名对象而不是更短的内容:
var list = repository
.GetCategories()
.Select(x => new SelectListItem
{
Value = x.category_id.ToString(),
Text = x.category_name + x.category_code
});
party.categories = new SelectList(list, "Value", "Text", "SelectedValue");
更不用说这种东西更适合你的映射层了。例如,如果您使用AutoMapper,则控制器操作可能如下所示:
public ActionResult Create()
{
var categories = repository.GetCategories();
var categoriesViewModel = Mapper.Map<IEnumerable<Category>, IEnumerable<CategoryViewModel>>(categories);
var party = new PartyViewModel
{
Categories = categoriesViewModel
}
return View(party);
}
答案 1 :(得分:0)
.ToDictionary(m => m.category_id, m => string.format("{0}{1}",m.category_name ,m.category_code));