2016-06-13 54 views
0

我不知道到底如何这个SQL转换为LINQ:转换SQL ON子句中的LINQ

LEFT JOIN pppltd.dbo.weboeordd ON pppltd.dbo.WEBOEORDD.ITEMNO = REPLACE(datawarehouse.dbo.ORDERFORMDUMP.ITEMNO,'-','') and weboeordd.ORDUNIQ = weboeordh.orduniq 

这是LINQ我有:

join weboeordd in db.WebOEOrdD on item.ITEMNO.Replace("-", "") equals weboeordd.ITEMNO && weboeordd.ORDUNIQ == db.WebOEOrdH.ORDUNIQ 

编译器给我一个“== ==”运算符右侧的错误表示“WebOEOrdH”没有ORDUNIQ的定义,但我知道它在模型中有效。

UPDATE

伊万Stoev一直还跟从MSDN留下一个链接上使用组合键

结果加入,我已经改变了我的LINQ使用匿名类型:

join weboeordd in db.WebOEOrdD on new { itemno = item.ITEMNO.Replace("-", ""), orduniq = weboeordh.ORDUNIQ } equals new { itemno = weboeordd.ITEMNO, orduniq = weboeordd.ORDUNIQ } 
+0

你能告诉我们整个linq声明吗? – lem2802

+1

[如何:通过使用组合键进行连接(C#编程指南)](https://msdn.microsoft.com/en-us/library/bb907099.aspx) –

+0

@IvanStoev谢谢!这个链接真的有帮助! – Sicypher

回答

1

伊万Stoev已经有一种足以在使用组合键

结果加入到从MSDN留下一个链接,我已经改变了我的LINQ使用匿名类型:

join weboeordd in db.WebOEOrdD on new { itemno = item.ITEMNO.Replace("-", ""), orduniq = weboeordh.ORDUNIQ } equals new { itemno = weboeordd.ITEMNO, orduniq = weboeordd.ORDUNIQ } 
1

您应该使用equals LINQ运算符而不是==比较运算符。参见MSDN为join clause (C# Reference)

+0

我已经在LINQ查询中有一个equals关键字来连接ITEMNO上的两个表,但在SQL中,您在ON子句之后编写的任何内容都像是WHERE子句。在查询中不能真正使用equals关键字两次,所以这就是我使用==比较运算符的原因。 – Sicypher