2017-07-12 50 views
1

尝试使用LINQ连接三个数据表table1,table2,table3。表1和表2在2个条件下联合,表1和表3在1个条件下联合。以下是我的代码。但是我收到一个异常说 “无法将类型为'System.DBNull'的对象转换为键入'System.String'”。INNER JOIN 3使用LINQ的数据表

下面是我的代码:

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"]          
      }; 

我的越来越异常接近(串)部分[“ProdCoilNo”]

回答

0

使用了包含空领域的聚结运营商与空字符串

更换

像这样:

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

使用​​3210歌剧tor

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          
     }; 
+0

没有帮助,..相同的例外 – sudheer