c# - INNER JOIN 3 使用 LINQ 的数据表

标签 c# mysql sql-server postgresql linq

尝试使用 LINQ 连接三个数据表 table1、table2、table3。表 1 和表 2 按 2 个条件连接,表 1 和表 3 按 1 个条件连接。以下是我的代码。但我得到一个异常(exception)说 “无法将‘System.DBNull’类型的对象转换为‘System.String’类型。”

下面是我的代码:

var result = from cust in tblCust.AsEnumerable()
             join mat in tblMat.AsEnumerable()
             new { coil_id = (string)cust["coil_id"], order_id = (string)cust["order_id"] }
             equals
             new { coil_id = (string)mat["PIECE_ID"], order_id = (string)mat["PRODUCTION_ORDER_ID"] }
                                 join parts in tblParts.AsEnumerable() on (string)mat["PIECE_ID"] equals (string)parts["ProdCoilNo"]
             select new
             {
                 coil_id = mat["PIECE_ID"],
                 order_id = mat["PRODUCTION_ORDER_ID"],
                 part = parts["PartNumber"],
                 gauge = mat["THICKNESS"],
                 width = mat["WIDTH"],
                 weight = mat["WEIGHT"],
                 code = mat["MATERIAL_BLOCK_STATE"],
                 requestor_comment = cust["requestor_comment"],
                 requestor = cust["requestor"],
                 updated_by_comment = cust["updated_by_comment"],
                 updated_by_user = cust["updated_by_user"]                                     
             };

我在 (string)parts["ProdCoilNo"] 附近遇到异常

最佳答案

对包含null的字段使用合并运算符替换为空字符串

像这样:

coil_id = mat["PIECE_ID"] ?? String.Empty,

关于c# - INNER JOIN 3 使用 LINQ 的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062261/

相关文章:

Javascript 内联下拉列表

c# - ServiceStack CORS - 仅在 IE 中不响应 OPTIONS 请求

php - 如何将 mysqli 结果从 php 页面传递到另一个页面?

php - PDO 查询未更新

sql-server - 使用 <sql :SqlScript> element 通过 Wix 运行 SQL 脚本文件

c# - 解决方案中存在冲突的对象名称

C# 在单击按钮时执行另一个程序

mysql - 在数据库中存储邮件的最佳方式(后缀)

asp.net - 不确定用于同步的 SQL Server 锁的类型

c# - 在 C# 中使用准备好的语句时出错