具有连接条件的LINQ更新查询

时间:2016-01-19 04:25:13

标签: linq

尝试使用on on on条件进行LINQ Update查询并且条件

关注我的SQL查询

UPDATE tbl_gs_related_orders  
SET RelatedCOI = sop.ServiceOrderNo  
FROM tbl_service_order_progress sop   
JOIN tbl_gs_related_orders ro  ON sop.parentid = ro.RelatedOrderParentId  
AND ro.RelatedCOIIdentifier collate database_default = sop.InstanceIdentifier collate database_default 
WHERE ro.ParentId = @PARENTID  
AND ro.relatedorderparentid IS NOT NULL

这个查询我希望在我的更新LINQ查询后转换为LINQ SO但是得到一些错误,例如“join子句中某个表达式的类型是错误的类型推断在加入调用中失败”

   var updateQuery = (from c in ctxParser.TBL_SERVICE_ORDER_PROGRESS
                               join o in ctxParser.tbl_GS_Related_Orders on new { ParentId = c.ParentId, InstanceIdentifier = c.InstanceIdentifier }
                               equals new { RelatedOrderParentId = o.RelatedOrderParentId, RelatedCOIIdentifier = o.RelatedCOIIdentifier }
                               where ro.RelatedOrderParentId == sParentId && ro.RelatedOrderParentId != null
                               select new
                               {
                                   ServiceOrderNo = c.ServiceOrderNo,
                                   Order = o
                               });

            foreach (var item in updateQuery)
            {
                item.Order.RelatedCOI = item.ServiceOrderNo;
            }

            ctxParser.SaveChanges();

1 个答案:

答案 0 :(得分:0)

在为equals子句创建匿名类型时使用相同的别名:

from c in ctxParser.TBL_SERVICE_ORDER_PROGRESS
join o in ctxParser.tbl_GS_Related_Orders on new { ParentId = c.ParentId, InstanceIdentifier = c.InstanceIdentifier }
equals new { ParentId = o.RelatedOrderParentId, InstanceIdentifier = o.RelatedCOIIdentifier }