我有一个项目模型映射到数据库,如下所示:
public class Item
{
public int ItemId { get; set; }
public DateTime Created { get; set; }
public string Title { get; set; }
}
为了显示这些项目的列表,我创建了一个ItemSummaryViewModel,如下所示:
public class ItemSummaryViewModel
{
public int ItemId { get; set; }
public string Title { get; set; }
public ItemSummaryViewModel(Item item)
{
this.ItemId = item.ItemId;
this.Title = item.JobTitle + " " + item.Created.ToString("ddd d MMM HH:mm");
}
}
我还创建了一个类来获取 List<Item> 并返回List<ItemSummaryViewModels>,如下所示:
public class ItemSummaryViewModelList : List<ItemSummaryViewModel>
{
public ItemSummaryViewModelList(List<Item> items)
{
foreach (Item i in items)
{
ItemSummaryViewModel itemSummary = new ItemSummaryViewModel(i);
this.Add(itemSummary);
}
}
}
最后,我们使用控制器将列表传递给视图,如下所示:
public ActionResult Index()
{
//IEnumerable<ItemSummaryViewModel> itemsummaries = new IEnumerable<ItemSummaryViewModel>();
List<Item> ListOfItems = db.Items.ToList();
ItemSummaryViewModelList ListOfItemViewModels = new ItemSummaryViewModelList(ListOfItems);
return View(ListOfItemViewModels);
}
我的问题是:
有没有更有效或“最佳实践”的方式来做到这一点?
要将 DB 模型 ( Item ) 列表转换为可显示视图模型 ( ItemSummaryViewModels ) 列表,我们目前遍历列表中的每个项目并单独转换它们。有没有更有效的方法来做到这一点?
本质上,我们正在查询数据库并将数据分配给 ViewModel 以显示为列表。我情不自禁地觉得我在“四处走动”,并且可能有一种更有效或“最佳实践”的方式来做到这一点。
有没有更好的办法?
谢谢