我正在尝试使用视图模型映射我的模型,我想这不是最有效的方法。这是代码:
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;
...
}
有更有效的方法吗?在for循环中调用havvViewModel HVM = new havvViewModel();
会产生性能问题,因为我每次都会创建一个新对象吗?
请告知......
答案 0 :(得分:1)
编写代码的方式,从性能角度来看,它确实没有任何问题。创建一个新对象是一个相对便宜的操作(假设在构造函数中没有进行任何工作)并且创建30个对象无需担心。
如果你想,你可以让你的代码变得更好。这不会对性能产生影响,但看起来很酷:)
return
db.halls
.Take(30)
.Select(h =>
new havvViewModel
{
Name = h.name
});
答案 1 :(得分:0)
正如@labilbe评论的那样,除非你在该循环中构建成千上万的对象,否则它将立即执行。我的偏好是每个&#34;屏幕有一个ViewModel&#34; (粗略地说)如果我有一个呈现大厅列表的页面,我就像构建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();
}
}