asp.net-mvc - 带 IQueryable<T> 的 ValueInjecter

标签 asp.net-mvc automapper valueinjecter

我需要 map IQueryable<User>IQueryable<SimpleUser>使用 ValueInjecter。

这可能吗?

我尝试过:

return userRepo.GetUsers()
               .Select(o => new SimpleUser().InjectFrom(o))
               .Cast<SimpleUser>();

但是这不能转换为存储的表达式...好吧,方法 InjectFrom .

自动映射器可以做到这一点吗?

我想要类似的东西:

return from i in userRepo.GetUsers()
      select new SimpleUser{
            i.UserId,
            i.Name
      };

但是使用某种映射工具。

最佳答案

在进行选择之前将集合转换为对象,它应该可以工作。使用 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>();

关于asp.net-mvc - 带 IQueryable<T> 的 ValueInjecter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443763/

相关文章:

c# - TPT 继承项目中带有 valueinjector 的 View 模型中的自定义属性

c# - 如何使用 AutoMapper 深度克隆包含 IList 属性的对象

asp.net-mvc - VB.Net 中的 ASP.Net session

.net - .net core mvc 中 session 超时时如何重定向

c# - AutoMapper 的 1.1 CreateMap 在长时间运行后引发 NullReferenceException

c# - 将对象复制到对象(使用 Automapper?)

automapper - 使用 ValueInjector 或 Automapper 时,如何防止 "Target"对象中的值被 "Source"对象中的 null 覆盖?嵌套映射问题?

asp.net - 从 asp.net MVC 中的查询字符串中删除空/空键

asp.net - 最佳方法 : Mutliple content place holders in MVC

c# - AutoMapper 最佳实践——我应该向 DAO 询问信息以完成从 DTO 到域对象的映射吗?