【问题标题】:INNER JOIN 3 Data Tables using LINQ使用 LINQ 的 INNER JOIN 3 数据表
【发布时间】:2017-12-17 03:38:59
【问题描述】:

尝试使用 LINQ 连接三个数据表 table1、table2、table3。表 1 和表 2 在 2 个条件下连接,表 1 和表 3 在 1 个条件下连接。以下是我的代码。但我得到一个例外说 “无法将 '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"] 附近遇到异常

【问题讨论】:

    标签: c# mysql sql-server postgresql linq


    【解决方案1】:

    对包含null的字段使用coalesce操作符替换为空字符串

    像这样:

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

    【讨论】:

      【解决方案2】:

      使用coalesce 运算符

      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"]?? String.Empty,
                   order_id = mat["PRODUCTION_ORDER_ID"]?? String.Empty,
                   part = parts["PartNumber"]?? String.Empty,
                   gauge = mat["THICKNESS"]?? String.Empty,
                   width = mat["WIDTH"]?? String.Empty,
                   weight = mat["WEIGHT"]?? String.Empty,
                   code = mat["MATERIAL_BLOCK_STATE"]?? String.Empty,
                   requestor_comment = cust["requestor_comment"]?? String.Empty,
                   requestor = cust["requestor"]?? String.Empty,
                   updated_by_comment = cust["updated_by_comment"]?? String.Empty,
                   updated_by_user = cust["updated_by_user"]?? String.Empty                                     
               };
      

      【讨论】:

      • 没有帮助,.. 同样的异常
      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2018-01-27
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多