Заменить вызов функции анонимным методом - PullRequest
1 голос
/ 26 мая 2011

Я чувствую себя глупо.Ребята, можете ли вы помочь мне заменить GetCamp (x) на анонимный?

Этот код:

   aspnet_Users.ForEach(x =>
        {
            usersVm.Add(new User{
                 Camp = Mapper.Map<DbCamp, Camp>(GetCamp(x)),
            });
        }); 


    private DbCamp GetCamp(aspnet_Users x)
    {
        //... some code ...
        return someDbCamp;
    }

Должно быть примерно так:

   aspnet_Users.ForEach(x =>
    {
         usersVm.Add(new User{
              Camp = Mapper.Map<DbCamp, Camp>
              (
                    Func<DbCamp>(aspnet_Users u) => 
                    { 
                         //... some code ...
                          return someDbCamp;
                    }
               ),
           });
     }); 

Это не работаетпотому что Mapper.Map<Database.Camp, Camp> ожидает объект typeof(DbCamp) в качестве параметра, а не делегат.Конечно, я могу использовать обычную функцию, но с академической точки зрения мне интересно, можно ли здесь использовать анонимный метод.

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Я думаю, что это должно обрабатывать пустой случай.

x => x.Users.Any() ? x.Users.First().Camp : null

В контексте:

_dataContext.aspnet_Users.ToList().ForEach(x =>
    {
        usersVm.Add(new User{
             Camp = Mapper.Map<Database.Camp, Camp>(
                  x => x.Users.Any() ? x.Users.First().Camp : null),
        });
    }); 
0 голосов
/ 01 июня 2011
aspnet_Users.ForEach(x =>
{
    usersVm.Add(new User{ Camp = Mapper.Map<DbCamp, Camp>({ /*... some code using x ...*/ return someDbCamp; }) });
});
0 голосов
/ 26 мая 2011

Это не работает:

x => GetCamp(x)

...