return new DispatcherNotifiedObservableCollection<OrderModel>(
DataAccess.DataService.FetchAllOrders(
CurrentCustomer.CustomerId.DataValue).ConvertAll(
new Converter<Order, OrderModel>(
OrderModel.OrderToOrderModel)));
FetchAllOrders
为某个customerID返回List<Order>
。
此列表将转换为List<OrderModel>
或换句话说List<OrderViewModel>
。
怎么会发生这种情况?必须是什么要求/条件,List<Order>
中Order对象的每个属性都转换为OrderModel
的属性?
答案 0 :(得分:2)
让我们让代码更具可读性:
List<Order> orders =
DataAccess.DataService.FetchAllOrders(CurrentCustomer.CustomerId.DataValue);
Converter<Order, OrderModel> converter =
new Converter<Order, OrderModel>(OrderModel.OrderToOrderModel);
List<OrderModel> orderModels = orders.ConvertAll(converter);
return new DispatcherNotifiedObservableCollection<OrderModel>(orderModels);
这里会发生什么?
代码从数据存储中提取所有订单并将其存储在List&lt; T&gt;中。
代码创建一个类型为Converter&lt; TInput,TOutput&gt;的委托。从单个Order转换为单个OrderModel。
该代码通过将转换器应用于每个订单,将所有订单转换为订单模型。
代码返回DispatcherNotifiedObservableCollection&lt; T&gt;转换后的值列表。
它是如何运作的?
基本上,ConvertAll在这里做的是等同于:
List<OrderModel> orderModels = new List<OrderModel>(orders.Count);
for (int i = 0; i < orders.Count; i++)
{
orderModels[i] = OrderModel.OrderToOrderModel(orders[i]);
}
这会回答你的问题吗?