首页 新闻 会员 周边 捐助

LINQ Select 如何实现动态映射?

0
悬赏园豆:40 [已解决问题] 解决于 2012-07-10 17:07

正常情况一般是采用匿名:

db.Table.AsNoTracking().Where().Select(cc => new { 
cc.id,
cc.name
});

同时也有用具体实体来映射:

db.Table.AsNoTracking().Where().Select(cc => new Table {
    id = cc.id, 
    name = cc.name
});

现在问题来了, 因为不同场景需要不同字段, 业务处理代码均一样, 仅仅映射的字段不一样而已, 这地方该如何处理?

分不多, 见谅

Y2zz的主页 Y2zz | 菜鸟二级 | 园豆:393
提问于:2012-07-10 14:48
< >
分享
最佳答案
0

采用老方法,数据源从外部传入,内部只进行处理

Y2zz | 菜鸟二级 |园豆:393 | 2012-07-10 17:06
其他回答(2)
0

使用不同DbContext,在每个DbContext中分别进行映射

收获园豆:20
dudu | 园豆:29759 (高人七级) | 2012-07-10 15:07

这样还是没有减轻代码量, 几百行代码就 select  new {} 不一样。。。。

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2012-07-10 15:59

@Y屌丝: 不同DbContext可以重用整个LINQ代码

如果只是select  new {}不一样,那只要把select  new {}之前的代码重用就行了。

支持(0) 反对(0) dudu | 园豆:29759 (高人七级) | 2012-07-10 16:26

@dudu: 看来还是只能采用老方法,数据源从外部传入,内部只进行处理

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2012-07-10 17:06
0

.Select(u =>
{
if (XXX)
return new { Name = u.FirstName + u.LastName };

return new { Name = u.LastName + u.FirstName };
});

收获园豆:20
zhangweiwen | 园豆:904 (小虾三级) | 2012-07-10 15:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册