用匿名方法替换函数调用

时间:2011-05-26 18:47:47

标签: c#-4.0 anonymous-methods

我觉得自己很蠢。你能帮助我用匿名替换 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 个答案:

答案 0 :(得分:1)

我认为这应该处理空案例。

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),
        });
    }); 

答案 1 :(得分:0)

这不起作用:

x => GetCamp(x)

答案 2 :(得分:0)

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