首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IQueryable<T>的ValueInjecter

使用IQueryable<T>的ValueInjecter
EN

Stack Overflow用户
提问于 2011-03-27 00:51:58
回答 1查看 736关注 0票数 3

我需要使用ValueInjecter将IQueryable<User>映射到IQueryable<SimpleUser>

这个是可能的吗?

我试过了:

代码语言:javascript
复制
return userRepo.GetUsers()
               .Select(o => new SimpleUser().InjectFrom(o))
               .Cast<SimpleUser>();

但这不能转换为存储的expression...well,即方法InjectFrom

automapper能做到这一点吗?

我想要类似这样的东西:

代码语言:javascript
复制
return from i in userRepo.GetUsers()
      select new SimpleUser{
            i.UserId,
            i.Name
      };

而是使用某种映射器工具。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-27 01:00:36

在执行select之前将集合转换为对象,它应该可以工作。使用PredicateBuilder更新了以显示筛选和分页,并使用Dynamic LINQ进行排序。

代码语言:javascript
复制
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>();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5443763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档