2011-05-26 65 views
1

我覺得很蠢。你們能幫我用匿名取代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)作爲參數,而不是委託。當然,我可以使用正常的功能,但從學術的角度來看,我想知道是否可以在這裏使用匿名方法。

回答

0

這難道不是工作:

x => GetCamp(x) 

+0

我需要有一個檢查,因爲FirstOrDefault可以爲空。我更新了問題 – Agzam 2011-05-26 18:52:20

+0

你不應該更新這樣的問題......應該關閉/接受答案並提出一個新問題。否則,你最終將得到毫無用處的答案,而這些問題似乎並不適合。 – Milimetric 2011-05-26 20:04:00

+0

編輯,是你在找什麼? – Milimetric 2011-05-26 20:05:54

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

它的工作原理雖然仍然沒有回答這個問題...如何使它匿名...使用Func <>或其他 – Agzam 2011-05-26 19:14:21

+0

我很肯定你可以粘貼它來代替GetCamp(X)。那不是你的意思? – dlev 2011-05-26 19:16:56

+0

我的意思是問題是學術性的...如果我需要檢查爲空,我只是要求。我需要用匿名替換整個GetCamp()。不管那個匿名方法的功能如何。再次更新問題 – Agzam 2011-05-26 19:23:27

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

這是行不通的 – Agzam 2011-06-01 16:16:58