我创建了一个qr
对象,以获取项目总数,而无需从数据库中获取所有数据,也可以在需要时选择MyViewModel
列表
var qr = dbSet.Select(o =>
new { ParentID = o.Parent.ID, o.Parent.Name, o.ID})
.Select(o => new MyViewModel(o.ParentID, o.Name, o.ID));
但是当我尝试qr.Count()
并且qr.ToList()
它们都在数据库中运行相同的查询时,不仅针对项目计数,还针对项目进行查询。
什么是同时获取“ MyViewModel”项目本身或项目计数或同时获得两者的最佳最快方法?
此查询的问题是因为它在以下位置调用了MyViewModel的构造函数:
.Select(o => new MyViewModel(o.ParentID, o.Name, o.ID))
该调用有效地将您的IQueryable转换为IEnumerable,因为无法从查询中调用构造函数。
为了避免这种转换,请使用对象初始化程序而不是构造函数:
.Select(o => new MyViewModel
{
ParentID = o.ParentID,
Name = o.Name,
ID = o.ID
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句