[英]Mapping List<T> to a model in ASP.NET MVC5
我试图用视图模型映射我的模型,我想这不是最有效的方法。 这是代码:
List<hall> allHalls = db.halls.Take(30).ToList();
List<HallViewModel> HVMLIST = new List<HallViewModel>();
int process = 0;
foreach(var hall in allHalls)
{
havvViewModel HVM = new havvViewModel();
HVM.name = hall.name;
...
}
有没有更有效的方法可以做到这一点? 将调用havvViewModel HVM = new havvViewModel();
在for循环中会产生性能问题,因为每次都在创建一个新对象? 请指教...
从性能的角度来看,代码的编写方式确实没有任何问题。 创建一个新对象是一个相对便宜的操作(假设构造函数中没有做任何工作),创建30个对象无关紧要。
如果您愿意,可以将代码设为linq-y。 这实际上不会对性能产生影响,但是看起来很酷:)
return
db.halls
.Take(30)
.Select(h =>
new havvViewModel
{
Name = h.name
});
正如@labilbe所评论的那样,除非您在该循环中构造成千上万的对象,否则它将立即执行。 我的偏好是每个“屏幕”(大约)有一个ViewModel,如果我有一个呈现大厅列表的页面,我会像这样组成ViewModel
public class HallListing : BaseViewModel
{
private List<hall> halls;
public void LoadData()
{
this.halls = base.db.halls.Take(30).ToList();
}
}
abstract class BaseViewModel
{
protected DataContext db { get; private set; }
public BaseViewModel()
{
this.db = new DataContext();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.