c# - join 子句中的表达式之一的类型不正确。调用“加入”时类型推断失败
问题描述
我正在使用以下查询来连接两个表。
IQueryable<BoaPieceConsole> pieceConsoleQueryable;
pieceConsoleQueryable = (from js in rewriteEntity.JobSummaries
where js.ProductCode != null
join bffd in rewriteEntity.BOAFinalFileDatas
on new { js.JobID, prodCode = js.ProductCode } equals new { bffd.ADFJobID, prodCode = bffd.ProductCode }
where js.ProductCode.Equals(ConsoleConstants.DAMAGED_PROD_CODE, StringComparison.OrdinalIgnoreCase)
&& js.ProcessDate >= startDate
select new DamageConsoleModel
{
JobID = js.JobID,
Productcode = js.ProductCode
});
我已经找出了问题,但无法找出解决此问题的方法。JobSummaries 表列 ProductCode 是可为空的类型,但 BOAFinalFileDatas ProductCode 是不可为空的。由于该连接引发编译时错误,说明:
join 子句中的表达式之一的类型不正确。对“加入”的调用中的类型推断失败。
ProductCode 列的数据类型是 varchar。
我应该如何解决这个问题?
解决方案
我相信您需要更改其中一个复合键的至少一部分的名称,以便它们匹配。
见这里:https ://docs.microsoft.com/en-us/dotnet/csharp/linq/join-by-using-composite-keys
就像是:
on new { JobID = js.JobID, prodCode = js.ProductCode } equals new { JobID = bffd.ADFJobID, prodCode = bffd.ProductCode }
推荐阅读
- django - 设置 Django CSRF Cookie
- python - 为什么在这个“try...except”块中没有捕获/处理错误?
- c - 打印算法:当值 [index] = 0x00 时,十六进制数组 printf 中断
- python - Tensorflow:相同结构的梯度和损失存在差异
- c++ - 如何确定特定状态在 boost-msm 中是否处于活动状态?
- php - 使用 Eden Imap 库的电子邮件正文中的附件和图像
- git - Git找不到标签所属的分支
- authentication - ASP.NET Core 2.1,没有本地身份的外部登录
- publish - 尽管进行了品牌验证,但无法发布 Dialogflow 机器人
- python - Python Flask 将大文件发布到 api