将List <t>映射到ASP.NET MVC5中的模型</t>

时间:2014-09-02 05:04:38

标签: c# asp.net-mvc asp.net-mvc-5

我正在尝试使用视图模型映射我的模型,我想这不是最有效的方法。这是代码:

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();会产生性能问题,因为我每次都会创建一个新对象吗? 请告知......

2 个答案:

答案 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();
     }
}