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