我需要从数据库中提取数据并填充视图模型,有没有更好的方法来执行此操作? 目前我正在做这样的事情。
ViewModel vm = new ViewModel();
var recentBill = context.Money.Take(10);
foreach (var r in recnetBill)
{
vm.lst.Add(r);
}
答案 0 :(得分:2)
IEnumerable
具有ToList()
函数,该函数返回所述类型的列表。
vm.lst = context.Money.Take(10).ToList(); // returns a List<Money>
答案 1 :(得分:1)
我建议你防止更改ViewModel.lst的可能性,即lst的类型应该是IEnumerable而不是List / IList(当然,如果你的进一步代码不需要List功能)。
此外,我想你不修改lst引用,所以你可以删除setter并通过构造函数初始化lst。
public class ViewModel
{
public ViewModel(IEnumerable<Money> lst)
{
this._lst = lst;
}
private readonly IEnumerable<Money> _lst;
IEnumerable<Money> Lst
{
get
{
return this._lst;
}
}
// other properties
}
public ActionResult GetMonies()
{
var model = new ViewModel(context.Money.Take(10).ToArray());
return View(model);
}
此方法可确保代码的使用者不会意外修改ViewModel.Lst。
答案 2 :(得分:0)
假设您的ViewModel如下所示:
public class ViewModel
{
IEnumerable<Money> lst { get; set; }
// other properties
}
这样做:
public ActionResult GetMonies()
{
var monies = context.Money
.Take(10)
.ToList();
var model = new ViewModel { lst = monies };
return View(model);
}