Dynamic 2个实体框架核心查询,具有动态Order by和Where子句,并且两者都在后面连接

Dynamic 2个实体框架核心查询,具有动态Order by和Where子句,并且两者都在后面连接,dynamic,entity-framework-core,Dynamic,Entity Framework Core,这么多的作品,我甚至不知道如何开始找到一个合适的方式 最好的方式,我可以伪写它(显然跳过了很多) 我不知道如何处理的问题: 全选-如果我最初没有将m.tableC.column选择到poco模型中,即使我在结果中不需要它,我也不能使用它。我是否应该选择最初在子查询中使用的字段,然后在子查询之后仅使用所需字段进行第二次选择?总共有18个额外字段。向poco添加字段听起来很混乱,我只需要在where/orderby中添加字段,而不需要在结果中添加字段 重复if语句-if(varColumn==“Co

这么多的作品,我甚至不知道如何开始找到一个合适的方式

最好的方式,我可以伪写它(显然跳过了很多)

我不知道如何处理的问题:

全选-如果我最初没有将m.tableC.column选择到poco模型中,即使我在结果中不需要它,我也不能使用它。我是否应该选择最初在子查询中使用的字段,然后在子查询之后仅使用所需字段进行第二次选择?总共有18个额外字段。向poco添加字段听起来很混乱,我只需要在where/orderby中添加字段,而不需要在结果中添加字段

重复if语句-if(varColumn==“ColumnA”)将对所有6+列具有相同的逻辑,有没有简化的方法?列名将始终以相同的格式命名。fieldTypeColumnA,fieldTypeColumnB

Join-我可以同时执行这两个查询,然后在1个trip/query中将它们连接在一起吗?输出字段是相同的。最初,它们都是在sql存储过程中添加到临时表中的,然后以随机顺序被选中

对于上下文:这是一组测试的结果,因此第一个查询是获取问题,第二个查询是获取可能的答案

在基本查询中使用EF/Linq有一段时间了,但没有这么复杂。SQL server,如果这很重要的话

感谢您的任何意见。谢谢

var model = from tableA in context.tableA join B in tableB join C in tableC join D in tableD 

if (varColumn == "ColumnA"){
    model = (from m in model orderby EF.Functions.DateDiffDay(m.date, DateTime.Now) - m.ColumnA 
                                where m.ColumnA != 0 & m.tableC.column != null
                                select m).FirstOrDefault();  //never null

if (varColumn == "ColumnB"){ ..basically the same orderby/where..
if (varColumn == "ColumnC"){ ..basically the same orderby/where..
 
join 

var model2 = Exact same logic except top X rows where not in model

var final = model join model2 order by newID