Wpf 包装一个IEnumerable<;T>;以可观察的方式收集<;T>;

Wpf 包装一个IEnumerable<;T>;以可观察的方式收集<;T>;,wpf,mvvm,viewmodel,ienumerable,Wpf,Mvvm,Viewmodel,Ienumerable,从我的存储库中,我总是得到一个IEnumerable 在我的ViewModel的Ctor或方法中,我希望将我的实体包装成一个可观察集合,如下所示: private ObservableCollection<CustomerViewModel> customerViewModels; public BillingViewModel(IService service) { ... IEnumerable<Customer> customers = service

从我的存储库中,我总是得到一个
IEnumerable

在我的ViewModel的Ctor或方法中,我希望将我的实体包装成一个
可观察集合
,如下所示:

private ObservableCollection<CustomerViewModel> customerViewModels;

public BillingViewModel(IService service)
{
   ...
   IEnumerable<Customer> customers = service.GetCustomers();

   // that will not work because of a different type
   customerViewModels = new ObservableCollection(customers); 

}
customerViewModels = new ObservableCollection<CustomerViewModel>(
    from c in customers
    select new CustomerViewModel(c)
);
private observeCollection客户服务模型;
公共计费视图模型(iSeries服务)
{
...
IEnumerable customers=service.GetCustomers();
//这将不起作用,因为类型不同
CustomerServiceWModels=新的ObservableCollection(客户);
}

您会怎么做?

如何将
客户
转换为
客户服务模型
?也许你只需要这样的东西:

private ObservableCollection<CustomerViewModel> customerViewModels;

public BillingViewModel(IService service)
{
   ...
   IEnumerable<Customer> customers = service.GetCustomers();

   // that will not work because of a different type
   customerViewModels = new ObservableCollection(customers); 

}
customerViewModels = new ObservableCollection<CustomerViewModel>(
    from c in customers
    select new CustomerViewModel(c)
);
CustomServiceWModels=新的ObservableCollection(
从c到客户
选择新的CustomerViewModel(c)
);

假设您有某种从Customer到CustomerServiceWModel的转换:

customerViewModels = new ObservableCollection<CustomerViewModel>
    (customers.Select(c => ConvertToViewModel(c)));
CustomServiceWModels=新的ObservableCollection
(customers.Select(c=>ConvertToViewModel(c));