簡體   English   中英

映射表 <T> 到ASP.NET MVC5中的模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM