transform_iterator компилируют проблему

Вы конфигурируете CreateMap<IList<AccountSubscription>, IList<AccountSubscriptionDto>>, но вам нужно _mapper.Map<IPagedList<AccountSubscriptionDto>>

попытаться настроить CreateMap<IPagedList<AccountSubscription>, IPagedList<AccountSubscriptionDto>>, например,

CreateMap<IPagedList<AccountSubscription>, IPagedList<AccountSubscriptionDto>>()
    .ConstructUsing(source => source.Items.GroupBy(g => new { g.CustomerNumber })
        .Select(s => new AccountSubscriptionDto
        {
            CustomerNumber = s.Key.CustomerNumber,
            AccountList = s.Select(t => t.AccountNumber).ToList()
        }).ToPagedList(source.PageIndex, source.PageSize, source.IndexFrom)
    );

. Но для этого размера размер страницы будет что вы группируете по исходным данным.

В общем, вы должны сгруппировать по источникам данных до ToPagedList. Вы можете сначала рассмотреть запрос и группу AccountSubscription, а затем позвонить ToPagedList.

5
задан Piotr Dobrogost 11 July 2009 в 18:47
поделиться

2 ответа

Так как Вы также попросили объяснение

transform_iterator потребности знать тип возврата функции, вызванной для инстанцирования себя. Это определяется через result_of (найденный в <boost/utility/result_of.hpp>

При использовании функционального объекта необходимо определить участника result_type указывать тип результата объекта. (так как объект не имеет 'типа возврата' как таковым),

Если Вы использовали бы регулярную функцию, result_of смог бы понять это самостоятельно, например:

template <typename K, typename V>
const V & get_value(std::pair<K, V> const & p)  { return p.second; }

class test
{
  typedef map<int, float> TMap;
  TMap mymap;

public:
  typedef boost::function< const TMap::mapped_type & (const  TMap::value_type &)  > F;
  typedef boost::transform_iterator<F, TMap::iterator> transform_iterator;

  transform_iterator begin()
  {
    return boost::make_transform_iterator(mymap.begin(), &get_value< int, float >);
  }
};
7
ответ дан 18 December 2019 в 14:52
поделиться

Необходимо будет наследоваться get_value от unary_function<const V&, std::pair<K, V> const&> сказать transform_iterator что подпись get_value .

6
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: