如何在存储库模式中将匿名列表转换为类型列表
本文关键字:列表 转换 类型 存储 模式 | 更新日期: 2023-09-27 18:27:28
我使用存储库模式与数据交互,并拥有一个图书列表,该列表希望获得带有一些字段的图书。我在数据层提供了一个IEnumerable方法,返回所需字段的列表:
public IEnumerable BookList()
{
var res=base.GetAll().Select(x => new { ID=x.ID, Name=x.Name }).ToList();
return res;
}
在表示层中,我尝试将类型更改为BookViewModel
,如下所示:
var res = _teacherUow.Books.BookList().OfType<ViewModel.BookViewModel >().ToList();
但是res
是空的,当我尝试投射它时
var res = _teacherUow.Books.BookList().Cast<ViewModel.BookViewModel >();
我收到这个例外:
Unable to cast object of type <>f__AnonymousType0`2[System.Int32,System.String]
to type ViewModel.BookViewModel
var res = _teacherUow.Books.BookList();
传递到字典中的模型项属于类型
System.Collections.Generic.List`1[<>f__AnonymousType0`2[System.Int32,System.String]]
但是这本字典需要类型的模型项
System.Collections.Generic.IEnumerable`1[ViewModel.BookViewModel]
在您的表示层中,将您的函数更改为:
public IEnumerable<ViewModel.BookViewModel> BookList()
{
List<ViewModel.BookViewModel> res=base.GetAll().Select(x => new ViewModel.BookViewModel {
ID=x.ID,
Name=x.Name
}).ToList();
return res;
}