c# - 使用 Linq EF 的动态列
问题描述
我需要使用EF创建一个Linq lambda语句。
我有 4 个需要Join的固定表(不包括参考表) 。但是需要检索的列名是基于引用表中的列名。
如您在上面的屏幕截图中所见,DB_TABLE
column 是需要连接的表的列(请忽略.SHIPTO
& .CONSIGNEE
,只需REL_BATCH_PARTY
)。该DB_FIELD
列是我需要选择的列。
例子
SUBSTR({0}CONTACT_PHONE,0,8)
所以我需要像SUBSTR(REL_BATCH_PARTY.CONTACT_PHONE,0,8)
。{0} 将替换为表名。
这是我基于参考表的最终 sql 语句:
SELECT *
FROM
(SELECT
(SELECT substr(REL_BATCH_PARTY.CONTACT_PHONE, 0, 8)
FROM REL_BATCH_PARTY
WHERE REL_BATCH_PARTY.REL_BATCH_ID = REL_BATCH.ID
AND REL_BATCH_PARTY.TYPE_CODE = 'SHIPTO') CONTACT_PHONE_SUBSTR,
(SELECT REL_BATCH_PARTY.CONTACT_PHONE
FROM REL_BATCH_PARTY
WHERE REL_BATCH_PARTY.REL_BATCH_ID = REL_BATCH.ID
AND REL_BATCH_PARTY.TYPE_CODE = 'SHIPTO') CONTACT_PHONE,
TO_CHAR(SYSDATE, 'dd-MM-yyyy') TODAY,
REL_BATCH.REL_NO,
(SELECT REL_BATCH_PARTY.ADDR01
FROM REL_BATCH_PARTY
WHERE REL_BATCH_PARTY.REL_BATCH_ID = REL_BATCH.ID
AND REL_BATCH_PARTY.TYPE_CODE = 'CONSIGNEE') ADDR01,
REL_BATCH_CONTAINER.CONTAINER_NO,
ROW_NUMBER() OVER(PARTITION BY REL_BATCH.ID
ORDER BY REL_BATCH_CONTAINER.ID, REL_BATCH_PARTY.TYPE_CODE) num
FROM REL_BATCH REL_BATCH
LEFT JOIN REL_BATCH_PARTY REL_BATCH_PARTY ON REL_BATCH.ID = REL_BATCH_PARTY.REL_BATCH_ID
LEFT JOIN REL_BATCH_CONTAINER REL_BATCH_CONTAINER ON REL_BATCH.ID = REL_BATCH_CONTAINER.REL_BATCH_ID WHERE ..... )A
WHERE A.NUM = 1
反正有没有使用 Linq Lambda 表达式创建?
列DB_FIELD
和行将根据参考表中的用户输入而动态变化。将DB_TABLE
只使用这 4 个表 ( REL_BATCH
, REL_BATCH_PARTY
, REL_BATCH_ATTR
, REL_BATCH_CONTAINER
)。该关系将ID
在REL_BATCH
所有其他 3 个表中具有外键。
谢谢你。
解决方案
推荐阅读
- python - 将此调用向量化为 minimize_scalar
- flutter-desktop - Flutter Desktop Windows 提示“未找到支持的设备”
- java - Selenium (firefox) 在 WebElement.Click 上挂起
- excel - 计算每周性能/Power Query
- javascript - 我如何将 Type Script 中的数字乘以 [{ count: 3, value: 2 },{ count: 7, value: 1 }] 这样的数组,使得答案是 3*2 + 7*1 = 13?
- javascript - 使用 JS 定期检查文本的有效方法
- python - 我的代码循环通过 urls 但不是 urls Python 中的页面
- android - 如何使用 CameraX 在应用程序内显示相机
- python - 未找到 BingAds API 类型问题
- python - 是否可以创建一个 django 查询来查找两个模型中最新的唯一日期?