左键与linq连接如何

左键与linq连接如何,linq,left-join,Linq,Left Join,我有一个linq查询: Dim lnqPrüfendeartikel = From r1 In (From row In dtKonf Let ARTNR_HZ_ROHNR = row.Field(Of String)("ARTNR-HZ") Let EMPF_ARTNR = row.Field(Of String)("ARTNR")

我有一个linq查询:

Dim lnqPrüfendeartikel = From r1 In (From row In dtKonf
                                 Let ARTNR_HZ_ROHNR = row.Field(Of String)("ARTNR-HZ")
                                 Let EMPF_ARTNR = row.Field(Of String)("ARTNR")
                                 Where ARTNR_HZ_ROHNR <> ""
                                 Select ARTNR_HZ_ROHNR, EMPF_ARTNR
                                 Order By ARTNR_HZ_ROHNR).Distinct.Concat( _
                                 (From row In dtKonf
                                 Let ARTNR_HZ_ROHNR = row.Field(Of String)("ROHNR")
                                 Let EMPF_ARTNR = row.Field(Of String)("ARTNR")
                                 Where ARTNR_HZ_ROHNR <> ""
                                 Select ARTNR_HZ_ROHNR, EMPF_ARTNR
                                 Order By ARTNR_HZ_ROHNR).Distinct)
                                 Join r2 In
                                 (From row In dtErlöse
                                 Let ARTNR = row.Field(Of String)("ARTNR")
                                 Let BWA = row.Field(Of String)("BWA")
                                 Let MENGE = row.Field(Of Double)("MENGE")
                                 Let M_EINHEIT = row.Field(Of String)("ME")
                                 Let WERT = row.Field(Of Double)("WERT")
                                 Where BWA = "201"
                                 Select ARTNR, MENGE, M_EINHEIT, WERT) On r1.EMPF_ARTNR Equals r2.ARTNR
                                 Select r1.ARTNR_HZ_ROHNR, r1.EMPF_ARTNR, r2.MENGE, r2.M_EINHEIT, r2.WERT
大概是这样的:

into JoinedQuery from r2 in JoinedQuery.DefaultIfEmpty() select new {r1.ARTNR_HZ_ROHNR, r1.EMPF_ARTNR, r2.MENGE, r2.M_EINHEIT, r2.WERT}
但vs不承认进入


这是什么问题?

您找到的解决方案是针对C。对于VB.NET,您需要使用:

Group Join r2 In (...) 
On r1.EMPF_ARTNR Equals r2.ARTNR Into JoinedQuery
From r2 In JoinedQuery.DefaultIfEmpty()
...

我得到的错误是:“Dim lnqProdsummenmitpreisen=来自lnqProdsummen组中的行,在LNqSolpreise中加入第2行。ARTNR_HZ_ROHNR等于第2行。这样就合并到JoinedQuery()来自JoinedQuery中的第2行。在此上下文中无法访问方法“JoinedQuery”的DefaultIfEmpty定义。我做错了什么?对不起,代码,我不知道,我是怎么写这个反勾的。@derstauner:尝试将括号从
中删除到JoinedQuery()
-它应该是
到JoinedQuery
中,没有括号。但是vb会在之后自动将其放入JoinedQuery@derstauner:听起来像是IDE中的一个bug;它后面绝对不应该有括号。如果无法取出括号,请尝试用其他名称替换
JoinedQuery
Group Join r2 In (...) 
On r1.EMPF_ARTNR Equals r2.ARTNR Into JoinedQuery
From r2 In JoinedQuery.DefaultIfEmpty()
...