猿问

LINQ Select 如何实现动态映射?

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

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

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

分不多, 见谅

一只名叫tom的猫
浏览 422回答 5
5回答

MYYA

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

jeck猫

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

GCT1015

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

蓝山帝景

.Select(u => { if (XXX) return new { Name = u.FirstName + u.LastName }; return new { Name = u.LastName + u.FirstName }; });
随时随地看视频慕课网APP
我要回答