3

ValueInjecterでマップIQueryable<User>する必要があります。IQueryable<SimpleUser>

これは可能ですか?

私は試した:

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

しかし、これを保存された式に変換することはできません...まあ、メソッドInjectFrom

automapperはこれを行うことができますか?

私はこれに似たものが欲しい:

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

しかし、ある種のマッパーツールを使用します。

4

1 に答える 1

4

選択を行う前にコレクションをオブジェクトに変換すると、機能するはずです。 PredicateBuilderを使用して更新し、フィルタリングとページング、および並べ替え用の動的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>();
于 2011-03-26T17:00:35.830 に答える