我需要使用ValueInjecter将IQueryable<User>映射到IQueryable<SimpleUser>。
这个是可能的吗?
我试过了:
return userRepo.GetUsers()
.Select(o => new SimpleUser().InjectFrom(o))
.Cast<SimpleUser>();但这不能转换为存储的expression...well,即方法InjectFrom。
automapper能做到这一点吗?
我想要类似这样的东西:
return from i in userRepo.GetUsers()
select new SimpleUser{
i.UserId,
i.Name
};而是使用某种映射器工具。
发布于 2011-03-27 01:00:36
在执行select之前将集合转换为对象,它应该可以工作。使用PredicateBuilder更新了以显示筛选和分页,并使用Dynamic LINQ进行排序。
var predicate = new PredicateBuilder<User>.True();
if (!string.IsNullOrEmpty( typeFilter ))
{
predicate = predicate.And( u => u.Type == typeFilter );
}
if (!string.IsNullOrEmpty( nameFilter ))
{
predicate = predicate.And( u => u.Name.StartsWith( nameFilter ));
}
// assumes sortColumn matches one of your user properties and
// sortDirection is either "ASC" or "DESC"
string sortOrder = string.Format( "{0} {1}", sortColumn, sortDirection );
return userRepo.GetUsers()
.Where( predicate )
.OrderBy( sortOrder )
.Skip( (page-1) * usersPerPage )
.Take( usersPerPage )
.ToList() // force the query and make these objects
.Select(o => new SimpleUser().InjectFrom(o))
.Cast<SimpleUser>();https://stackoverflow.com/questions/5443763
复制相似问题