问题描述
|
我觉得我好笨。你们可以帮我用匿名代替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)
作为参数,而不是委托。我当然可以使用正常的功能,但是从学术角度来看,我想知道这里是否可以使用匿名方法。
解决方法
我认为这应该处理空洞的情况。
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),});
});
,这不起作用:
x => GetCamp(x)
?
,aspnet_Users.ForEach(x =>
{
usersVm.Add(new User{ Camp = Mapper.Map<DbCamp,Camp>({ /*... some code using x ...*/ return someDbCamp; }) });
});